#include <stdio.h>
void max_min(int A[],int n,int& max,int& min)
{
int i;
if(n%2==0)
{
if(A[0]>A[1])
{
max=A[0];
min=A[1];
}
else
{
max=A[1];
min=A[0];
}
for(i=2;i<n-1;i=i+2)
{
if(A[i]>A[i+1])
{
if(max<A[i])
max=A[i];
if(min>A[i+1])
min=A[i+1];
}
else
{
if(max<A[i+1])
max=A[i+1];
if(min>A[i])
min=A[i];
}
}
}
else
{
max=min=A[0];
for(i=1;i<n-1;i=i+2)
{
if(A[i]>A[i+1])
{
if(max<A[i])
max=A[i];
if(min>A[i+1])
min=A[i+1];
}
else
{
if(max<A[i+1])
max=A[i+1];
if(min>A[i])
min=A[i];
}
}
}
}
int main()
{
int A[]={8,9,6,7,4,5};
int max,min;
max_min(A,6,max,min);
printf("The maximum is %d\n",max);
printf("The minimum is %d\n",min);
}
//在该实现中,我们只进行了3n/2次比较,如果采用单独找出最大值与最小值的话,则要进行2n-2次比较。
同时找出数组的最大值和最小值,要求时间复杂度为o(n)
最新推荐文章于 2024-03-11 16:30:39 发布