c++最大最小值递归算法
时间: 2023-11-18 19:55:13 浏览: 52
C++中求最大最小值的递归算法可以使用分治法来实现。具体步骤如下:
1. 将数组分成两个部分,分别求出左半部分和右半部分的最大最小值。
2. 比较左半部分的最大值和右半部分的最大值,取其中较大的一个作为整个数组的最大值。
3. 比较左半部分的最小值和右半部分的最小值,取其中较小的一个作为整个数组的最小值。
下面是一个示例代码:
```
#include <iostream>
using namespace std;
void findMinMax(int arr[], int low, int high, int& min, int& max) {
if (low == high) {
min = max = arr[low];
} else if (high - low == 1) {
if (arr[low] < arr[high]) {
min = arr[low];
max = arr[high];
} else {
min = arr[high];
max = arr[low];
}
} else {
int mid = (low + high) / 2;
int min1, max1, min2, max2;
findMinMax(arr, low, mid, min1, max1);
findMinMax(arr, mid + 1, high, min2, max2);
min = min1 < min2 ? min1 : min2;
max = max1 > max2 ? max1 : max2; }
}
int main() {
int arr[] = {3, 5, 1, 9, 8, 4, 7, 2, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, 0, n - 1, min, max);
cout << "最小值为:" << min << endl;
cout << "最大值为:" << max << endl;
return 0;
}
```