#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次比较。