问题标题:
【给定n个数,在最坏情况下用╔3n/2-2╕次比较找出这n个数中元素的最大值和最小值Input包含多组测试数据.每组测试数据的第一个元素是整数的个数n,接下来是n个整数.0表示结束.n】
问题描述:
给定n个数,在最坏情况下用╔3n/2-2╕次比较找出这n个数中元素的最大值和最小值
Input
包含多组测试数据.每组测试数据的第一个元素是整数的个数n,接下来是n个整数.0表示结束.n
李昭仁回答:
ACM吧,
#include
usingnamespacestd;
voidMaxAndMin(int*a,intleft,intright,int&max,int&min)
{
intnum=right-left+1;
if(num==1)
{
max=a[left];
min=a[left];
return;
}
if(num==2)
{
if(a[left]>a[right])
{
max=a[left];
min=a[right];
return;
}
else
{
max=a[right];
min=a[left];
return;
}
}
else
{
intm id=(left+right)/2;
intmaxr,minr,maxl,minl;
MaxAndMin(a,left,mid,maxl,minl);
MaxAndMin(a,mid+1,right,maxr,minr);
if(maxl>maxr)
max=maxl;
else
max=maxr;
if(minl>num;
if(num)
{
a=newint[num+1];
a[0]=0;
for(inti=1;i>a[i];
}
intmax,min;
MaxAndMin(a,1,num,max,min);
cout
点击显示
其它推荐