Re: [問題] 多重hash的sorting
※ 引述《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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章