用C++写一个代码利用分治法求一组数据中最大的两个数
时间: 2023-11-15 14:07:02 浏览: 112
好的,以下是使用分治法求解数组中最大的两个数的 C 代码:
#include <stdio.h>
void find_max_two(int arr[], int left, int right, int *max1, int *max2) {
if (left == right) {
*max1 = arr[left];
*max2 = arr[left];
} else if (left + 1 == right) {
if (arr[left] > arr[right]) {
*max1 = arr[left];
*max2 = arr[right];
} else {
*max1 = arr[right];
*max2 = arr[left];
}
} else {
int mid = (left + right) / 2;
int max1_l, max1_r, max2_l, max2_r;
find_max_two(arr, left, mid, &max1_l, &max2_l);
find_max_two(arr, mid + 1, right, &max1_r, &max2_r);
if (max1_l > max1_r) {
*max1 = max1_l;
if (max2_l > max1_r) {
*max2 = max2_l;
} else {
*max2 = max1_r;
}
} else {
*max1 = max1_r;
if (max2_r > max1_l) {
*max2 = max2_r;
} else {
*max2 = max1_l;
}
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int max1, max2;
find_max_two(arr, 0, 8, &max1, &max2);
printf("最大的两个数分别是 %d 和 %d\n", max1, max2);
return 0;
}
希望能够帮助到您!
阅读全文