降序無效為何?
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); }
2015-10-18
算法錯了。
降序可以采用這樣的算法:
先讓最后一個數和它前面的數相比較,比前面那個小的話,就和前面的互換位置,再讓倒數第二個數和前面的數比較...一直比較到前兩個數,這樣比較一輪下來,最前面的那個數肯定是最小的。這就是一次內循環。
再次從最后一個數開始,讓其與前面的數比大小,把更小的換到前面......這次要比到第二個數(因為第一個數已經是最小的了),這樣第二個數就是除第一個數以外最小的了。這是第二次內循環。
這樣的內循環一共要進行N-1次,外層循環就是控制這N-1的。