用分治法求数组最大数c语言
时间: 2023-09-01 19:10:45 浏览: 120
以下是使用分治法求解数组最大数的C语言代码:
```
#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int findMax(int arr[], int left, int right) {
if (left == right) {
return arr[left];
}
int mid = (left + right) / 2;
int maxLeft = findMax(arr, left, mid);
int maxRight = findMax(arr, mid + 1, right);
return max(maxLeft, maxRight);
}
int main() {
int arr[] = {1, 5, 10, 2, 8, 3, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int maxNum = findMax(arr, 0, n - 1);
printf("The maximum number in the array is %d", maxNum);
return 0;
}
```
在该代码中,使用了递归的方法实现了分治法。首先,定义了一个max函数,用于比较两个数的大小并返回其中较大的一个。然后,定义了一个findMax函数,用于查找数组中的最大数。该函数的参数包括一个数组arr,以及数组的左右边界left和right。当left和right相等时,说明数组只有一个元素,此时返回该元素即可。否则,将数组分为两部分,分别在左半部分和右半部分中查找最大数,并将它们的结果取最大值作为整个数组的最大数。在main函数中,定义了一个数组,并将其传递给findMax函数,最终输出数组中的最大数。
阅读全文