int rankS(int score[]){
int i,j,temp;
for(i=0;i<=N-2;i++) /* N为10 */
{
for(j=N-1;j>=i;j--)
{
if(score[i]<score[j]){
temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
printS(score);
}算法错了。
降序可以采用这样的算法:
先让最后一个数和它前面的数相比较,比前面那个小的话,就和前面的互换位置,再让倒数第二个数和前面的数比较...一直比较到前两个数,这样比较一轮下来,最前面的那个数肯定是最小的。这就是一次内循环。
再次从最后一个数开始,让其与前面的数比大小,把更小的换到前面......这次要比到第二个数(因为第一个数已经是最小的了),这样第二个数就是除第一个数以外最小的了。这是第二次内循环。
这样的内循环一共要进行N-1次,外层循环就是控制这N-1的。
int i, j;
for (i = 0; i < N-1; ++i) {
for (j = N-1; j > i; --j) {
int temp;
if (score[j] < score[j-1]) {
temp = score[j-1];
score[j-1] = score[j];
score[j] = temp;
}
}
}