c语言代码写分治法实现在n个元素的集合中选出最大值和次大值以及最小值和次小值;
时间: 2024-06-06 13:08:36 浏览: 20
#include <stdio.h>
void findMinMax(int arr[], int low, int high, int *min, int *max)
{
int mid, min1, max1, min2, max2;
// 如果只有一个元素
if (low == high) {
*min = *max = arr[low];
return;
}
// 如果有两个元素
if (high == low + 1) {
if (arr[low] > arr[high]) {
*max = arr[low];
*min = arr[high];
} else {
*max = arr[high];
*min = arr[low];
}
return;
}
// 如果有多个元素
mid = (low + high) / 2;
findMinMax(arr, low, mid, &min1, &max1);
findMinMax(arr, mid + 1, high, &min2, &max2);
// 比较两个子问题的最小值和最大值
if (min1 < min2) {
*min = min1;
} else {
*min = min2;
}
if (max1 > max2) {
*max = max1;
} else {
*max = max2;
}
}
int main()
{
int arr[] = { 3, 6, 1, 8, 2, 9, 4, 7, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
findMinMax(arr, 0, n - 1, &min, &max);
printf("Minimum element is %d\n", min);
printf("Maximum element is %d\n", max);
return 0;
}
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)