[問題] 二維陣列排序

看板C_and_CPP作者 (Mars)時間10年前 (2014/03/07 21:51), 編輯推噓1(1018)
留言19則, 3人參與, 最新討論串2/2 (看更多)
小弟我現在再打一隻程式碼求座標間的最短距離 我的方法是用動態記憶體配置先配出一個2*N的二維陣列 (0,i)(1,i) 分別存入X與Y座標 現在問題來了... 假設我想依X座標的大小來做排序 而且Y座標也要跟著跑 不知道該怎麼寫QQ 我寫了下面這個程式 可是跑出來的結果跟沒排序一樣= = qsort(ptr1,2,sizeof(*ptr1),Cmp); int Cmp(const void *lhs, const void *rhs) { return ((const int *)lhs)[1]-((const int *)rhs)[1]; } 跪求版上大大教我QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.136.4

03/07 21:53, , 1F
你的cmp內容是什麼?
03/07 21:53, 1F
不好意思 剛忘記補上QQ ※ 編輯: qq820901 來自: 140.122.136.4 (03/07 21:56)

03/07 22:06, , 2F
二維陣列需要用 ** 雙重指標代表
03/07 22:06, 2F

03/07 22:10, , 3F
痾 是在qsort()裡面那個sizeof嗎?
03/07 22:10, 3F

03/07 22:34, , 4F
lhs 跟 rhs
03/07 22:34, 4F

03/07 22:34, , 5F
你 sizeof 也不能這樣算
03/07 22:34, 5F

03/07 22:42, , 6F
所以ˋlhs rhs都要改成**嗎??
03/07 22:42, 6F

03/07 22:42, , 7F
那 sizeof應該放什麼@@?
03/07 22:42, 7F

03/07 23:45, , 8F
如果是我,我會定一個 struct...
03/07 23:45, 8F

03/07 23:49, , 9F
那邊沒有弄得很清楚 所以才會選擇用動態記憶體配置QQ
03/07 23:49, 9F

03/08 00:01, , 10F
單純意見,用動態記憶體也沒有什麼問題啦XD
03/08 00:01, 10F

03/08 00:37, , 11F
建議你可以先另外定義一個指標,確定能正常讀取
03/08 00:37, 11F

03/08 00:37, , 12F
陣列的值在開始寫你的 cmp
03/08 00:37, 12F

03/08 00:45, , 13F
03/08 00:45, 13F

03/08 00:56, , 14F
03/08 00:56, 14F

03/08 01:00, , 15F
http://ideone.com/De44cP 上面說用 struct 的方式
03/08 01:00, 15F

03/08 01:01, , 16F
剛剛說錯,應該說用 struct 也還是要動態配置啦XDD
03/08 01:01, 16F

03/08 01:01, , 17F
只是比起 2d array,用 struct 比較好懂一點
03/08 01:01, 17F

03/08 01:34, , 18F
謝謝各位大大T___T小弟終於弄出來了
03/08 01:34, 18F

03/08 01:34, , 19F
對於兩位大人的大恩大德無以回報阿QQ
03/08 01:34, 19F
文章代碼(AID): #1J6SxkKY (C_and_CPP)
文章代碼(AID): #1J6SxkKY (C_and_CPP)