[問題] 動態二維struct與qsort

看板C_and_CPP作者 (chi)時間13年前 (2012/03/21 01:27), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
各位好 小弟動態開了一個二維的struct 然後將它丟到qsort內要做排序時出了問題 我一開始是先試著不用動態宣告二維struct 這樣的結果都是正確的 但我用new的就不知道錯在哪裡 結果都亂七八糟Q_Q 拜託版友幫我看看是哪裡出了問題 code在這 : http://codepad.org/adNwMgF0 只貼了部分有關qsort與struct的程式 我是想排序match.value 之後再去抓未排序前的index 請各位幫幫忙 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.107.172.190

03/21 01:38, , 1F
(*(Bestmatch **)a)->value - (*(Bestmatch **)b)->value;
03/21 01:38, 1F

03/21 02:10, , 2F
看不出來你二維的是要對哪些元素排序...
03/21 02:10, 2F
我要對 match[i][j].value 做排序...QQ ※ 編輯: cygnus122 來自: 120.107.172.190 (03/21 02:14)

03/21 02:22, , 3F
我指的不是排序的準則, 是你想排的是哪些元素
03/21 02:22, 3F

03/21 02:24, , 4F
因為由傳的引數來看看不出來, 型別跟數值沒有對到
03/21 02:24, 4F

03/21 02:25, , 5F
是要每列各自排好, 還是整個陣列以 row major 的方式
03/21 02:25, 5F

03/21 02:26, , 6F
排?
03/21 02:26, 6F
是以整個陣列做排序 D陣列的資料型態是double 對應到match[i][j].value 這個資料型態也是double http://codepad.org/b06O6Dih 這個是靜態開二維struct的 結果正確... 不知道為什麼改成動態的就錯了Q_Q 我是用VS2008 ※ 編輯: cygnus122 來自: 120.107.172.190 (03/21 05:01)

03/21 14:21, , 7F
用malloc結果一樣嗎?http://www.gidforums.com/t-4785.htm
03/21 14:21, 7F
對 用malloc也一樣 我猜想是不是在動態配置二維struct的時候 這些位置不是連續的 所以餵進去qsort沒辦法正確的抓到值 因為我改成動態配一維的就可以用XD 但是二維就不行.. ※ 編輯: cygnus122 來自: 120.107.172.190 (03/21 14:29) 自問自答一下 果然是記憶體配置的問題 因為不是連續的位置 我參考版上 #18nfY1iV 這篇的連續動態配置記憶體的方法 這樣結果就正確了 感謝各位的回應 ※ 編輯: cygnus122 來自: 120.107.172.190 (03/21 14:56)
文章代碼(AID): #1FQBtan0 (C_and_CPP)