为了对体能进行摸底,需要知道最好成绩和最差成绩,请你用分治法实现两个查找函数,可快速找出最好成绩和最差成绩。
函数接口定义:
int max(int *a,int m,int n); int min(int *a,int m,int n);
其中 max
和 min
函数分别用于求出最大成绩和最差成绩。
裁判测试程序样例:
#include <stdio.h>
#define N 100
int max(int *a,int m,int n);
int min(int *a,int m,int n); //注意采用分治法,不使用循环语句
int main() { int i, n,a[N],max_val,min_val;
scanf ("%d", &n);
for(i=0;i<n;i++)
scanf ("%d", &a[i]);
max_val=max(a,0,n-1);
min_val=min(a,0,n-1);
printf("max=%d,min=%d", max_val,min_val);
return 0; }
/* 请在这里填写答案 */
输入样例:
第一行输入元素个数n,第二行输入n个数
5
2 1 9 5 7
输出样例:
max=9,min=1
代码实现:
int max(int *a,int m,int n)
{
int mid;
if(m==n)
{
return a[m];
}
mid=(m+n)/2;
int left=max(a,m,mid);
int right=max(a,mid+1,n);
if(left>right)
return left;
return right;
}
int min(int *a,int m,int n)
{
int mid;
if(m==n)
{
return a[m];
}
mid=(m+n)/2;
int l=min(a,m,mid);
int r=min(a,mid+1,n);
if(l<r)
return l;
return r;
}