分治法查找最大最小值c++实验代码
时间: 2024-10-12 14:09:27 浏览: 67
分治法在查找数组中的最大值和最小值是一种常见的算法策略,通常用于简化复杂度并提高效率。下面是一个简单的C++代码示例,使用分治法寻找数组中的最大值:
```cpp
#include <iostream>
using namespace std;
// 分治法查找最大值的辅助函数
int findMax(int arr[], int low, int high) {
// 基线条件:只有一个元素
if (low == high)
return arr[low];
// 中间点
int mid = low + (high - low) / 2;
// 递归地找出左半部分和右半部分的最大值
int maxLeft = findMax(arr, low, mid);
int maxRight = findMax(arr, mid+1, high);
// 返回整个数组的最大值
return max(maxLeft, maxRight);
}
int main() {
int arr[] = {5, 9, 1, 7, 3};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum value in the array is: " << findMax(arr, 0, n-1) << endl;
return 0;
}
```
对于查找最小值,只需稍作修改,在`findMin`函数中替换`maxLeft`和`maxRight`为`minLeft`和`minRight`即可。
阅读全文