作者redmist (....N )
看板perl
标题Re: [问题] 多重hash的sorting
时间Tue Nov 6 16:34:28 2007
※ 引述《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)