c语言分治法代码示例
时间: 2024-04-22 19:20:27 浏览: 97
分治法是一种算法设计策略,它将一个大问题分解成若干个相同或类似的子问题,然后递归地解决这些子问题,并将它们的解合并起来得到原问题的解。下面是一个C语言的分治法代码示例,用于计算一个数组中的最大值:
```c
#include <stdio.h>
// 分治法求解最大值
int maxDivide(int arr[], int left, int right) {
if (left == right) {
return arr[left];
}
int mid = (left + right) / 2;
int maxLeft = maxDivide(arr, left, mid);
int maxRight = maxDivide(arr, mid + 1, right);
return (maxLeft > maxRight) ? maxLeft : maxRight;
}
int main() {
int arr[] = {5, 9, 3, 7, 2};
int size = sizeof(arr) / sizeof(arr);
int max = maxDivide(arr, 0, size - 1);
printf("最大值为:%d\n", max);
return 0;
}
```
在这个示例中,我们定义了一个`maxDivide`函数,它接受一个数组和左右边界作为参数。首先判断左右边界是否相等,如果相等,则返回该位置上的元素作为最大值。否则,我们将数组分成两半,分别递归调用`maxDivide`函数求解左半部分和右半部分的最大值,然后将两个最大值中较大的那个作为整个数组的最大值返回。
在`main`函数中,我们定义了一个测试数组`arr`,并计算出数组的大小。然后调用`maxDivide`函数求解最大值,并将结果打印输出。