📜  数组中局部极值数的C++程序(1)

📅  最后修改于: 2023-12-03 14:54:59.160000             🧑  作者: Mango

数组中局部极值数的C++程序

该程序用于查找数组中的局部极大值和局部极小值,并输出其位置和值。

思路

循环遍历数组,查找当前元素是否为局部极值数。如果当前元素大于(或小于)左右相邻元素,则找到一个局部极大值(或局部极小值)。

代码
#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