利用c语言用分治算法实现从一组数据中找出第二大的数,并将结果输出
时间: 2024-02-27 22:55:32 浏览: 52
好的,下面是利用 C 语言实现从一组数据中找出第二大的数,并将结果输出的代码。
```
#include <stdio.h>
// 分治函数,返回最大值和次大值
void FindSecondMax(int A[], int left, int right, int *max, int *second_max) {
int mid;
if (left == right) { // 数组只有一个元素
*max = A[left];
*second_max = A[left];
} else if (left + 1 == right) { // 数组有两个元素
*max = A[left] > A[right] ? A[left] : A[right];
*second_max = A[left] < A[right] ? A[left] : A[right];
} else {
mid = (left + right) / 2;
int max1, max2, second_max1, second_max2;
// 分治
FindSecondMax(A, left, mid, &max1, &second_max1);
FindSecondMax(A, mid + 1, right, &max2, &second_max2);
// 比较大小
if (max1 > max2) {
*max = max1;
*second_max = max2 > second_max1 ? max2 : second_max1;
} else {
*max = max2;
*second_max = max1 > second_max2 ? max1 : second_max2;
}
}
}
int main() {
int A[] = {3, 7, 2, 8, 6, 4, 5};
int n = sizeof(A) / sizeof(A[0]);
int max, second_max;
FindSecondMax(A, 0, n - 1, &max, &second_max);
printf("Second max is: %d\n", second_max);
return 0;
}
```
希望这个答案能够帮助到你!