3. (程序实现)给定含有 个不同的数的数组 。如果 中存在 ,则称 是单峰的,并称 是 的“峰顶”。假设 是单峰的,请编写程序实现输出 的峰顶位置。使用C++语言实现
时间: 2024-12-14 11:20:21 浏览: 12
要解决这个问题,你可以使用C++编写一个简单的线性搜索算法来找到单峰数组(升序数组)中的峰顶。以下是实现的代码:
```cpp
#include <iostream>
using namespace std;
int findPeak(int arr[], int n) {
if (n == 1 || arr[0] > arr[1]) { // 如果数组只有一个元素或者第一个元素大于第二个,直接返回0
return 0;
}
// 从第二个元素开始遍历数组,查找峰值
for (int i = 1; i < n - 1; ++i) {
if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) { // 如果当前元素大于其左右邻居,则找到了峰顶
return i;
}
}
// 如果数组最后一个元素是峰值
return n - 1;
}
// 测试示例
int main() {
int L[] = {1, 3, 2, 5, 4};
int n = sizeof(L) / sizeof(L[0]);
int peakIndex = findPeak(L, n);
cout << "峰顶的位置: " << peakIndex << endl;
return 0;
}
```
这段代码定义了一个`findPeak`函数,它接收一个整数数组和数组长度作为参数。函数通过比较相邻元素找出峰顶。在`main`函数中,我们创建了一个测试数组并调用这个函数,输出峰顶的位置。
阅读全文