解法1:扫描两遍数组,分别求出最大的数和最小的数,需要比较2*N次。
函数如下:
void find_max_min(int &max,int &min,int n,int *a)
{
if(n<=0) return;
if(n==1)
{
max=a[n];
min=a[n];
return;
}
max=a[0];
min=a[0];
for(int i=0;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
}
if(a[i]<min)
{
min=a[i];
}
cout<<i<<" min is"<<min<<" "<<"max is"<<max<<endl;
}
}
解法2:利用变量max和min来存储当前最大值和最小值。然后将数组两两分组(逻辑上),将两个当中的较大者与max比较,如果比max大则更新max,较小者与min比较,如果比min小则更新min。需要比较1.5*N次。
函数如下:
void find