全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4231
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [>>]

一萬筆以上資料,排序 + 搜尋

尚未結案
brant
一般會員


發表:1
回覆:64
積分:23
註冊:2003-04-07

發送簡訊給我
#32 引用回覆 回覆 發表時間:2003-04-10 14:37:07 IP:61.219.xxx.xxx 未訂閱
引言: 看了各位的討論..有個問題想請教一下 如brant所說的..若是以structure為傳入值 能否使compare根據structure內的某個陣列的某欄來排序 譬如
struct test{
 int dir[3];
};
如果要以dir[i]的值來排序.而這個i值希望是可以變動的 這樣做的到嗎? 謝謝指教~~
在 structure 裡面加個 i,在設定 dir 三個值的時候把 i 也設上 比較時再拿來用。 要換 i 時,把需要改的 i 值改完,再做一次 qsort 不知道這是不是您想問的。 我的回答喜歡只給一個方向,剩下的就靠你自己了!!! ~~不喜歡大大來大大去的,沒事不要往我臉上塗奶油~~
Cafia
一般會員


發表:6
回覆:12
積分:3
註冊:2003-03-17

發送簡訊給我
#33 引用回覆 回覆 發表時間:2003-04-10 16:17:55 IP:163.28.xxx.xxx 未訂閱
引言:
引言: 看了各位的討論..有個問題想請教一下 如brant所說的..若是以structure為傳入值 能否使compare根據structure內的某個陣列的某欄來排序 譬如
struct test{
 int dir[3];
};
如果要以dir[i]的值來排序.而這個i值希望是可以變動的 這樣做的到嗎? 謝謝指教~~
在 structure 裡面加個 i,在設定 dir 三個值的時候把 i 也設上 比較時再拿來用。 要換 i 時,把需要改的 i 值改完,再做一次 qsort 不知道這是不是您想問的。 我的回答喜歡只給一個方向,剩下的就靠你自己了!!! ~~不喜歡大大來大大去的,沒事不要往我臉上塗奶油~~
抱歉..是我沒說清楚.. 我的意思是..對structure陣列內每一個元素 都以i為索引來排序..譬如說
struct test ary[1000];
i=2;
ary[0].dir[i]
ary[1].dir[i]
...              //將整個陣列依dir中第3個值來排序
我想到的方法是用全域變數..所以我把compare寫成下面這樣
int global=2;
int compare(const void *arg1,const void *arg2)
  {
   int ret= ((struct point *)(arg1))->dir[global]-((struct point *)(arg2))->dir[global];
   return ret;
  }
結果是OK啦..不過沒想到qsort也要26秒(500萬筆左右)..嗚嗚 太慢了啊~~
[<<] [1] [2] [>>]
系統時間:2024-04-29 22:32:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!