十分感謝各位。
果然是有公式的,數學不學好還真是不行啊,我抽象觀念差,光靠想的真的想不出來,後來自己用指頭算
但以下這個程式寫法,我就是搞不懂紅藍字的部份,why它會如此寫 ?
代碼:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int item[100];
int a,b,t;
int count;
printf("how many numbers? \n");
scanf("%d",&count);
for(a=0;a<count;a++) scanf("%d", &item[a]);
for(a=1;a<count;a++)
for(b=count-1;b>=a;b--)
{
if (item[b-1]>item[b]) {
t=item[b-1];
item[b-1]=item[b];
item[b]=t;
}
}
for(t=0;t<count;t++) printf("%d\n",item[t]);
return 0;
}
假設我要將十個數字排序,紅字的地方顯然是從1開始而小於count(10)就是只從1到9,算9次而已。
這樣說吧,剛開始a=1,b=count-1就是從9開始往下減,最後減到>=a就是減到1,可是陣列的第一個元素排序不是0嗎?最前面那個就不比了嗎?