查找年龄问题。在当前疫情形势下,在医院收治的感染患者中利用分治法设 计查找病患序列中的年龄最大和最小的患者; 利用递归思想的分治法思路。c++实现
时间: 2024-02-01 18:14:04 浏览: 105
分治算法(最近点对问题的C++实现)
5星 · 资源好评率100%
下面是C++实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 分治法查找最大和最小值
void findMinMax(vector<int> arr, int low, int high, int& max, int& min) {
if (low == high) { // 只有一个元素
max = arr[low];
min = arr[low];
} else if (high == low + 1) { // 两个元素
if (arr[low] > arr[high]) {
max = arr[low];
min = arr[high];
} else {
max = arr[high];
min = arr[low];
}
} else { // 多于两个元素
int mid = (low + high) / 2;
int max1, min1, max2, min2;
// 递归搜索左半部分
findMinMax(arr, low, mid, max1, min1);
// 递归搜索右半部分
findMinMax(arr, mid + 1, high, max2, min2);
// 合并结果
if (max1 > max2) {
max = max1;
} else {
max = max2;
}
if (min1 < min2) {
min = min1;
} else {
min = min2;
}
}
}
int main() {
vector<int> arr = {18, 59, 23, 41, 32, 67, 98, 49};
int max, min;
findMinMax(arr, 0, arr.size() - 1, max, min);
cout << "Max: " << max << endl;
cout << "Min: " << min << endl;
return 0;
}
```
输出结果:
```
Max: 98
Min: 18
```
阅读全文