/********************************************************
** Highlight software by yzfy(雨中飞燕) http:// *
*********************************************************/
void FinMazMin(int a[],int len)
{
assert(a!=NULL && len>0);
int *p=a+len%2,min,max;
if (p!=a) min=max=a[0];
else min=INT_MAX,max=INT_MIN;
for (a+=len;p < a;p+=2)
{
int t1=p[0]>p[1],t2=!t1;
if (p[t1]<min)min=p[t1];
if (p[t2]>max)max=p[t2];
}
printf("%d %d\n",min,max);
}
如果单纯说写法的话……
其实还写了一种不使用附加变量的方法。但是只对len>=3的情况有效,懒得分情况讨论了(况且也不好看),就这样吧,你那个a可写的条件无视了算了………………
[[it] 本帖最后由 StarWing83 于 2008-5-17 07:49 编辑 [/it]]