C++ 小至大排列,為何有錯?那裏錯了?

2013-02-16 6:10 am
寫一程式, 在程式執行時, 可以輸入5個整數, 然後判斷它們的大小, 由小至大的形式列印至螢幕

#include<stdio.h>
int main(void)
{
int i,j,a[5],t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(j=0;j<5;j++)
for(i=0;i<5-j;i++)
if(a[i]>a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
for(i=0;i<5;i++)
printf("%d ",a[i]);
return 0;
}

何解我做完後,我輸入45,75,288,95,3,輸出的結果是0 35 45 75 95。何解288會變了0??到底那裏錯了??
更新1:

咁應該點做??

回答 (1)

2013-02-16 7:41 am
✔ 最佳答案
bubble sort的外圈用來保證最細number如始初在最後,需要n-1次才游到上頂。即j loop應做4次。
內圈則係一pair pair咁compare,如需要時把它對調,每次都要由0做到3,和j無關。


收錄日期: 2021-04-26 11:31:54
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20130215000051KK00412

檢視 Wayback Machine 備份