在一个数组中同时找到最大和最小值用分治法实现给出c语言代码
时间: 2024-09-24 10:14:19 浏览: 45
分治法查找最大最小数的C代码
5星 · 资源好评率100%
在C语言中,可以使用分治法结合递归的方式在一个数组中同时查找最大值和最小值。这里提供一个简单的示例,不过需要注意的是,分治法通常用于复杂的问题分解,对于寻找数组的最大值和最小值这样的简单操作,一般采用迭代更为直接。
```c
#include <stdio.h>
// Function to find both max and min in an array using Divide-and-Conquer approach
void findMinMax(int arr[], int low, int high, int *min, int *max) {
// Base case: only one element
if (low == high) {
*min = arr[low];
*max = arr[low];
return;
}
// Middle index for dividing the array into two halves
int mid = (low + high) / 2;
// Recursively find min and max for left and right halves
findMinMax(arr, low, mid, min, max);
findMinMax(arr, mid + 1, high, min, max);
// Compare current values with found min and max
if (*min > arr[mid + 1]) {
*min = arr[mid + 1];
}
if (*max < arr[mid]) {
*max = arr[mid];
}
}
int main() {
int arr[] = {5, 3, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
// Call function with initial range
findMinMax(arr, 0, n - 1, &min, &max);
printf("Minimum value: %d\n", min);
printf("Maximum value: %d\n", max);
return 0;
}
```
阅读全文