全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1700
推到 Plurk!
推到 Facebook!

排序的問題.........

缺席
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-09-16 11:09:46 IP:61.225.xxx.xxx 未訂閱
我要將分數(0-100分)做排序,現在如果我有四筆數字25、65、100、94,排序出來會變成 94、65、25、100 ,100跑到最後了,可是100是最高分丫,請問我該怎麼辦呢???
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-16 11:51:39 IP:211.23.xxx.xxx 未訂閱
最簡單的氣泡排序法 FOR I:=1 TO 4 DO    FOR J:=I+1 TO 4 DO       IF NUM[I]
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-09-16 11:53:37 IP:211.23.xxx.xxx 未訂閱
上面的程式有誤 重PO一遍:
FOR I:=1 TO 4 DO 
FOR J:=I 1 TO 4 DO 
IF NUM[I]

        
kan0515
中階會員


發表:56
回覆:120
積分:50
註冊:2002-06-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-09-16 11:55:50 IP:211.23.xxx.xxx 未訂閱
怪怪的…怎麼字都會不見呢?? IF那行請改為 NUM[I]>NUM[J] THEN //遞減排序
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-09-17 21:18:50 IP:210.85.xxx.xxx 未訂閱
引言: 我要將分數(0-100分)做排序,現在如果我有四筆數字25、65、100、94,排序出來會變成 94、65、25、100 ,100跑到最後了,可是100是最高分丫,請問我該怎麼辦呢???
你的分數欄位是否為字串, 因為只有為字串, 2Byte < 3Byte, 所以 100會被排到最後!
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-09-17 21:47:26 IP:61.217.xxx.xxx 未訂閱
我是分數是字串型態,而且我是用ADOQuery下SQL做排序的,所以我現在應該如何呢? sqlvar:='SELECT stu_name AS 姓名 ,stu_Grade1 AS 學科成績,stu_Grade2 AS 術科成績,stu_TGrade AS 總成績 rom student WHERE echelon="' ReadStr '" order by stu_No '; 而且最好能判斷總成績相同時,能再以學科成績大小做去排序。 註:ReadStr為一變數。
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-09-17 21:51:56 IP:61.217.xxx.xxx 未訂閱
抱歉剛剛程式貼錯! sqlvar:='stu_name AS 姓名 ,stu_Grade1 AS 學科成績,stu_Grade2 AS 術科成績,stu_TGrade AS 總成績 student WHERE echelon="' ReadStr '" order by stu_TGrade desc';
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-09-18 08:51:56 IP:61.219.xxx.xxx 未訂閱
主要關鍵在須與數字排序, 故將成績轉成數字 轉成數字之內建函數各資料庫不同, Oracle為TONumber, MSSQL,SYbase為convert sqlvar:='stu_name AS 姓名 ,stu_Grade1 AS 學科成績,stu_Grade2 AS 術科成績,stu_TGrade AS 總成績 student WHERE echelon="' ReadStr '" order by Convert(int,stu_TGrade) desc,Convert(int,stu_Grade2) desc
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-09-20 22:19:35 IP:210.85.xxx.xxx 未訂閱
引言: 主要關鍵在須與數字排序, 故將成績轉成數字 轉成數字之內建函數各資料庫不同, Oracle為TONumber, MSSQL,SYbase為convert sqlvar:='stu_name AS 姓名 ,stu_Grade1 AS 學科成績,stu_Grade2 AS 術科成績,stu_TGrade AS 總成績 student WHERE echelon="' ReadStr '" order by Convert(int,stu_TGrade) desc,Convert(int,stu_Grade2) desc
另外一個方式(最笨的), 在分數存檔時 25 存成 025, 依此類推就解決! 也就是將字串型態的數值字元全部統一成一樣長, 不足的補零(包含小數)
kenji
一般會員


發表:32
回覆:44
積分:20
註冊:2002-08-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-10-14 00:09:30 IP:61.225.xxx.xxx 未訂閱
請問還有沒有更好的辦法丫~~~???
系統時間:2024-05-14 8:40:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!