Re: [問題] 多重hash的sorting

看板Perl作者時間17年前 (2007/11/06 16:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《david220 (累)》之銘言: : $p{2}->{1}->{1} = 1; : $p{2}->{2}->{2} = 4; : $p{2}->{3}->{4} = 2; : $p{1}->{1}->{8} = 8; : $p{1}->{2}->{16} = 5; : $p{1}->{3}->{24} = 7; : 請問如果我要sorting以上hash : 並輸出對應的key(key不一定是數字),該怎麼做? : 希望的輸出 : 2->1->1 : 2->3->4 : 2->2->2 : 1->2->16 : 1->3->24 : 1->1->8 可轉成$p{2 1 1} = 1; $p{2 2 2} = 4; ....... ..... 這樣的格式,然後 @sorted_key = sort { $p{$b} <=> $p{$a} } keys %p; 即可完成排序 記憶體不夠大的話也只好採用merge sort,就是將資料切割成好幾個檔案,每個檔案 排序好之後,每個檔案排序好之後再做合併排序(這部分查一下演算法的書),不然乾 脆如其他人建議改用C等語言,Perl似乎真的蠻會吃記憶體的 cpan和ppm有提供一個merge sort模組可用 http://search.cpan.org/dist/Sort-Merge-0.01/lib/Sort/Merge.pm 你可以參考一下 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.96.189 ※ 編輯: redmist 來自: 140.113.96.189 (11/06 16:41)
文章代碼(AID): #17C2SLE4 (Perl)
討論串 (同標題文章)
文章代碼(AID): #17C2SLE4 (Perl)