分别用减一法和分治法去求数组内的最大值包含主函数c语言
时间: 2024-02-25 21:58:36 浏览: 27
减一法求最大值的代码如下:
```c
#include <stdio.h>
int getMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int main() {
int arr[] = {3, 1, 5, 2, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int max = getMax(arr, n);
printf("Max: %d\n", max);
return 0;
}
```
分治法求最大值的代码如下:
```c
#include <stdio.h>
int max(int a, int b) {
return a > b ? a : b;
}
int getMax(int arr[], int left, int right) {
if (left == right) {
return arr[left];
}
int mid = (left + right) / 2;
int leftMax = getMax(arr, left, mid);
int rightMax = getMax(arr, mid + 1, right);
return max(leftMax, rightMax);
}
int main() {
int arr[] = {3, 1, 5, 2, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int max = getMax(arr, 0, n - 1);
printf("Max: %d\n", max);
return 0;
}
```
以上两段代码分别使用了减一法和分治法来求解数组内的最大值。其中,减一法直接遍历数组,比较每个元素的大小,找到最大值;分治法则是将数组分成两半,递归求解左右两部分的最大值,再取左右两部分的最大值中的较大值作为整个数组的最大值。