※ 引述《meows (琦)》之銘言:
: ※ 引述《SmallTACO (*乖者違背常理也*)》之銘言:
: : int rr;
: : for(i=1;i<320*320;i++)
: : {
: : j=i;
: : rr=numbers[i];
: : do
: : {
: : numbers[j]=numbers[j-1];
: : j=j-1;
: : if(j<0)
: : break;
: : }while(rr<=numbers[j-1]);
: : numbers[j+1]=rr;
: : }
: 條件式該放do後面吧
: 因為第一次的執行沒有條件判斷
: 必然是有問題的
嗯...
那是c++語法...
每本書都這樣寫...
應該沒問題啦 ^^
我今天自己在紙上又run過了一遍...
發現自己犯了basic語法轉換成c++語法的錯誤...
(因為手邊沒有c++的排序程式...
只好看以前basic的書自己轉換過來...)
改成下面這樣應該就沒問題了...
回家試試看 ^^
int rr;
for(i=1;i<320*320;i++)
{
j=i;
rr=numbers[i];
do
{
numbers[j]=numbers[j-1];
j=j-1;
if(j==0)
break;
}while(rr<=numbers[j-1]);
numbers[j]=rr;
}
: 以前寫過氣泡排序
: 很久沒碰了
: 如果需要我再把資料找給你
嗯...
氣泡排序是我之前唯一不用看任何書兩三下就能寫出來的排序法...
高中學basic時不學無術,以為學會一種就夠了 ><~
可是氣泡排序的速度太慢了...
以我的例子而言總共有 102400 筆資料...
用氣泡排序法大概要10分鐘左右...
插入排序法時間大約小於氣泡的一半...
而謝耳排序法1分鐘之內就解得出來了...
另外還有兩種排序法...
今天晚上要學下來 ^^
試試在紙上run一遍謝耳排序法吧!
看能不能找出錯誤 ^^
--
錢多事少離家近 位高權重責任輕
每日睡到自然醒 薪水領到手抽筋
逢年過節拿獎金 別人加班我加薪
秘書妖豔員工齊 有禍歸人功歸己
歐美亞非加南極 出差旅遊任我行