您的位置:首页 > 其它

求最大、最小值的高效算法

2009-10-16 18:23 162 查看
void MaxMin(int a[], int n)
{
int max,min,s,i; //s为循环起始元素的下标
if (n < 1) return;
if (n == 1) max = min = 0;
else
{
//n为奇数时,max和min初值为第0个元素
if (n%2) {max = min = 0; s = 1;}
//n为偶数时,max和min初值为第0、1个元素比较后的结果
else
{
if (a[0] > a[1]) {max = 0; min = 1;}
else {max = 1; min = 0;}
s = 2;
}
for(i = s; i < n; i+=2) //比较余下的数对
{
//先比较a[i]和a[i+1],再和max、min比较
if(a[i] > a[i+1])
{if(a[i]>a[max]) max=i; if(a[i+1]<a[min]) min=i+1;}
else
{if(a[i+1]>a[max]) max=i+1; if(a[i]<a[min]) min=i;}
}
}
printf("max = %d,min = %d",a[max],a[min]);
}

void main()
{
int a[6] = {62,31,84,96,19,47};
MaxMin(a,6);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: