Re: [問題] 關於雙層排序

看板C_and_CPP (C/C++)作者 ((short)(-15074))時間16年前 (2009/04/27 19:21), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《suscym (DoDreamEr)》之銘言: : 想了許久 都想不出乾淨俐落的作法 .... : 有可能是我本身的資料結構是array 不是動態 才比較麻煩 : ( 所以暫時不考慮改變資料結構) : 今天我有一結構 裡面有變數 帳戶餘額 和 年齡, 我先透過stable的排序法 : 依照帳戶餘額排列過(因為有可能餘額同 所以我用stable的) 接著 : 我想在"資料已經依照餘額由小到大排列過"的條件下,再進行年齡的排列 : 但是到目前為止 我只想出另外宣告一些資料結構 透過回圈不斷檢查 再把新順序放在 : 新結構紀錄,但是一直感覺這做法很沒效率 又可能有邏輯上的漏洞... 所以想上來 : 請教各位的看法,謝謝 如果你要的是先對餘額排 相同時再排年齡 以你這個方向有一個小修的做法 反過來先對年齡排序 然後再用 stable 的排序對餘額排 這樣就是你要的了 其原理嘛...有個排整數的 sort 法叫 Radix sort 這個方法是 LSB 先排的 Radix sort 的變形 以那裡來類比 "十位" 相當於你的 "餘額" (主要鍵) "個位" 相當於你的 "年齡" (次要鍵) 這樣就容易理解了 你之所以為碰壁是因為你做成了 MSB 先排的 Radix sort 這需要分別在每堆主要鍵相同的資料中對次要鍵來排 --- 當然比較漂亮的做法是照原推文說的 比大小時直接就比出兩筆資料的前後 這樣一口氣就可以把資料排好了 -- 実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」 亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」 実琴:「難道你沒有男人的尊嚴了嗎?!」 亨:(斷然道)「沒有。在節衣縮食生活吃緊學生面前,沒有那種東西。」 --プリンセス・プリンセス 第二話 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.84

04/27 20:37, , 1F
真的很謝謝你耶 這MSB和LSB以前都學過 但是不大會活用
04/27 20:37, 1F

04/27 20:37, , 2F
沒想到今天這兩種關聯變數的例子可以這樣想 好強大!!!
04/27 20:37, 2F

04/27 20:37, , 3F
謝謝~!!!
04/27 20:37, 3F
文章代碼(AID): #19zPKWtE (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #19zPKWtE (C_and_CPP)