看板 Perl 關於我們 聯絡資訊
※ 引述《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)