C语言分治法求数组最大数和最小数
时间: 2024-10-22 20:06:43 浏览: 35
C语言用分治法实现数组归并排序算法实现
在C语言中,分治法求解数组的最大值和最小值通常可以使用两个独立的函数分别处理,一个用于找最大值,另一个用于找最小值。这里我们以递归的方式实现:
首先,我们可以定义一个基本情况:如果数组只有一个元素,那么这个元素既是最大值也是最小值。
```c
int findMax(int arr[], int size) {
if (size == 1)
return arr[0];
else {
int max = findMax(arr + 1, size - 1); // 递归查找右侧的max
return max > arr[0] ? max : arr[0]; // 如果右侧更大则返回右侧的,否则返回当前元素
}
}
int findMin(int arr[], int size) {
if (size == 1)
return arr[0];
else {
int min = findMin(arr + 1, size - 1); // 递归查找右侧的min
return min < arr[0] ? min : arr[0]; // 如果右侧更小则返回右侧的,否则返回当前元素
}
}
```
然后,你可以通过调用这两个函数并传入整个数组和其大小来得到结果:
```c
int main() {
int arr[] = {5, 9, 2, 7, 1, 8};
int n = sizeof(arr)/sizeof(arr[0]);
int max_val = findMax(arr, n);
int min_val = findMin(arr, n);
printf("最大值: %d\n", max_val);
printf("最小值: %d\n", min_val);
return 0;
}
```
阅读全文