分治法求最大最小值c++
时间: 2023-11-22 16:38:23 浏览: 72
用分治法求最大与最小值的问题
分治法求最大最小值c的具体实现如下:
1. 将数组A平均分成两个子数组B和C,递归求解B和C的最大最小值。
2. 比较B和C的最大最小值,得到整个数组A的最大最小值。
具体实现代码如下:
```
// 求最大值
int max(int a[], int l, int r) {
if (l == r) {
return a[l];
} else {
int mid = (l + r) / 2;
int max_left = max(a, l, mid);
int max_right = max(a, mid + 1, r);
return max(max_left, max_right);
}
}
// 求最小值
int min(int a[], int l, int r) {
if (l == r) {
return a[l];
} else {
int mid = (l + r) / 2;
int min_left = min(a, l, mid);
int min_right = min(a, mid + 1, r);
return min(min_left, min_right);
}
}
// 测试
int main() {
int a[] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
printf("max=%d, min=%d\n", max(a, 0, 9), min(a, 0, 9));
return 0;
}
```
该算法的时间复杂度为O(nlogn),可以在较短的时间内求出大规模数据的最大最小值。
阅读全文