1、可以换,数组和指针是可以通用的;
2、因为最大的放在a[0],次大的放在a[2]...,这之间的下标相差都是2;
3、j从i+i开始循环,到n结束循环,增量为1;
4、max用来存放最大、次大。。。的数, min用来存放最小、次小、。。。的数,
px用来存放对应最大、次大。。。的下标,pn用来存放最小、次小、。。。的数的下标,
i跟j就是用来循环的
5、
for ( i=0; i< n-1 ; i+=2) //对i循环0、2、4、8,a[i]存最大、次大,a[i+1]存最小、次小
{ //每次循环的结果是找到一对数:最大和最小或者次大和次小。。。
max=min=a[i]; //对max和min初始化,
px=pn=i; //同理,也对max和min的对应的下标初始化
for (j=i+1; j
if (max < a[j] ) //比当前max大的数
{
max = a[j] ; //重置max
px = j ; //记录其位置下标
}
if (min > a[j]) //同上,找到比当前min小的数
{
min = a[j] ; //同上,重置min
pn = j ; //同上,记录min对应位置下标
}
}
if ( px != i) //若px发生改变(现在指向实际最(次)大的数),需要将i与px对应数互换
{
t = a[i];
a[i] = max ;
a[ px ] = t ;
if (pn == i) //pn未变,(指向实际最(次)小的数),由于之前i已经与px互换,因此需要将pn指向px
pn = px;
}
if (pn != i+1) //pn不等于i+1表示最(次)小的数为放置在a[i+1]中
{
t=a[i+1]; //将最(次)小的数存至a[i+1]中
a[ i+1] = min ;
a[ pn] = t ;
}
}
我也不会c#,不过自学过一点,可以告诉你3
3: 这句的意思是j的初始值是i+1,只要j比n小,就循环执行下面的语句,执行后j的值要增加1,这是典型的c#循环语句。