void fun(int a[], int n)
{ int i ,j ,max ,min, px, pn, t;
for ( i=0; i< n-1 ; i+=2)
{
max=min=a[i];
px=pn=i;
for (j=i+1; j
{ max = a[j] ; px = j ; }//最大值放在max, px放最大值的下脚标
if (min > a[j])
{ min = a[j] ; pn = j ; }//最小值放在min, pn放最小值的下脚标
}
if ( px ! = i)//如果最大值不是此次a[i]的位置,便互换位置
{ t = a[i]; a[i] = max ;
a[ px ] = t ;
if (pn == i) pn = px;//如果最小值是此次a[i]的位置,更新pn中的脚标,因为px换到a[i]了
}
if (pn ! = i+1)//如果最小值不是此次a[i+1]的位置,便互换位置
{ t=a[i+1]; a[ i + 1] = min ;
a[ pn] = t ; }
}
}
1、void fun(int a[], int n)中 a[]换成*a对么?为什么?
可以,a[]可表示指针
2、for ( i=0; i< n-1 ; i+=2)为什么是i+=2而不是+1?
每次查找最大、最小值,占2个位置,即a[i]、a[i+1]
3、for (j=i+1; j
4、int i ,j ,max ,min, px, pn, t字母各代表什么?
i,j做循环用
max a[i]到a[n-1]中的最大值,px为其下脚标
min a[i]到a[n-1]中的最小值,pn为其下脚标
t 中间互换时的变量