以下是使用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];
} else {
int mid = (left + right) / 2;
int leftMax = findMax(arr, left, mid);
int rightMax = findMax(arr, mid + 1, right);
return max(leftMax, rightMax);
}
}
int main() {
int arr[] = {3, 5, 1, 7, 9, 4};
int n = sizeof(arr) / sizeof(arr[0]);
int maxNum = findMax(arr, 0, n - 1);
printf("The maximum number in the array is %d\n", maxNum);
return 0;
}
该程序定义了一个递归函数findMax,用于在给定的数组范围内查找最大值。在每次递归中,程序将数组分为左右两个部分,分别求出左半部分和右半部分的最大值,并返回两者中较大的一个。最后,在主函数中调用该函数,并输出结果。