给定一个含n个整数顺序存储的线性表,按分治法思路,要求采用二分策略,设计一个求出其最大值。
输入格式:
第一行输入一个整数n。第二行为n个整数。n和n个数小于等于10000。
输出格式:
n个整数中的最大值。
这是一个经典的递归练习题,代码如下:
#include<stdio.h>
int FindMaxNum(int nums[], int left, int right)
{
if (left == right){
return nums[left];
}
int mid = (left + right) / 2;
int leftMax = FindMaxNum(nums, left, mid);
int rightMax = FindMaxNum(nums, mid + 1, right);
if (leftMax < rightMax)
{
return rightMax;
}
return leftMax;
}
void main()
{
int n;
printf("请输入n:");
scanf("%d", &n);
int nums[n], c = 0;
printf("请输入n个数字:");
while (c < n)
{
scanf("%d", &nums[c]);
c++;
}
int res = FindMaxNum(nums, 0, n - 1);
printf("%d\n", res);
}
运行结果:
希望给个采纳,谢谢。