C语言实现一维寻峰算法
时间: 2023-09-29 07:02:23 浏览: 272
下面是一个简单的C语言实现一维寻峰算法的示例代码:
```c
#include <stdio.h>
int findPeak(int arr[], int n) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if ((mid == 0 || arr[mid] >= arr[mid - 1]) && (mid == n - 1 || arr[mid] >= arr[mid + 1])) {
return arr[mid]; // 找到峰值
}
else if (mid > 0 && arr[mid - 1] > arr[mid]) {
right = mid - 1; // 左侧存在更大的元素,向左查找
}
else {
left = mid + 1; // 右侧存在更大的元素,向右查找
}
}
return -1; // 没有找到峰值
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 4, 3, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
int peak = findPeak(arr, n);
if (peak != -1) {
printf("Peak element is %d\n", peak);
}
else {
printf("No peak element found\n");
}
return 0;
}
```
这段代码实现了一个简单的一维寻峰算法。算法使用二分查找的思想,在数组中寻找一个峰值元素。如果找到峰值,则返回该元素的值;如果未找到峰值,则返回 -1。在示例代码中,数组 arr 中的峰值为 5。输出结果为 "Peak element is 5"。
阅读全文