一萬筆以上資料,排序 + 搜尋 |
尚未結案
|
brant
一般會員 發表:1 回覆:64 積分:23 註冊:2003-04-07 發送簡訊給我 |
引言: 看了各位的討論..有個問題想請教一下 如brant所說的..若是以structure為傳入值 能否使compare根據structure內的某個陣列的某欄來排序 譬如在 structure 裡面加個 i,在設定 dir 三個值的時候把 i 也設上 比較時再拿來用。 要換 i 時,把需要改的 i 值改完,再做一次 qsort 不知道這是不是您想問的。 我的回答喜歡只給一個方向,剩下的就靠你自己了!!! ~~不喜歡大大來大大去的,沒事不要往我臉上塗奶油~~struct test{ int dir[3]; };如果要以dir[i]的值來排序.而這個i值希望是可以變動的 這樣做的到嗎? 謝謝指教~~ |
Cafia
一般會員 發表:6 回覆:12 積分:3 註冊:2003-03-17 發送簡訊給我 |
引言:抱歉..是我沒說清楚.. 我的意思是..對structure陣列內每一個元素 都以i為索引來排序..譬如說引言: 看了各位的討論..有個問題想請教一下 如brant所說的..若是以structure為傳入值 能否使compare根據structure內的某個陣列的某欄來排序 譬如在 structure 裡面加個 i,在設定 dir 三個值的時候把 i 也設上 比較時再拿來用。 要換 i 時,把需要改的 i 值改完,再做一次 qsort 不知道這是不是您想問的。 我的回答喜歡只給一個方向,剩下的就靠你自己了!!! ~~不喜歡大大來大大去的,沒事不要往我臉上塗奶油~~struct test{ int dir[3]; };如果要以dir[i]的值來排序.而這個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. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |