📅  最后修改于: 2023-12-03 14:54:59.160000             🧑  作者: Mango
该程序用于查找数组中的局部极大值和局部极小值,并输出其位置和值。
循环遍历数组,查找当前元素是否为局部极值数。如果当前元素大于(或小于)左右相邻元素,则找到一个局部极大值(或局部极小值)。
#include <iostream>
using namespace std;
void findLocalExtrema(int arr[], int n) {
// 处理特殊情况
if (n < 3) {
cout << "No local extrema found in the array." << endl;
return;
}
// 遍历数组,查找局部极值数
for (int i = 1; i < n - 1; i++) {
// 查找局部极大值
if (arr[i] > arr[i-1] && arr[i] > arr[i+1]) {
cout << "Local maximum value found at position " << i << ": " << arr[i] << endl;
}
// 查找局部极小值
else if (arr[i] < arr[i-1] && arr[i] < arr[i+1]) {
cout << "Local minimum value found at position " << i << ": " << arr[i] << endl;
}
}
}
int main() {
// 测试数据
int arr[] = {1, 5, 2, 8, 3, 7, 4, 6, 9};
int n = sizeof(arr) / sizeof(arr[0]);
// 查找局部极值数
findLocalExtrema(arr, n);
return 0;
}
Local maximum value found at position 3: 8
Local minimum value found at position 4: 3
Local maximum value found at position 5: 7