说,我有一个清单:
@abc = (5,7,6,2,7,1);
Run Code Online (Sandbox Code Playgroud)
我必须获得一个排序列表以及一个排序列表索引.所以输出将是:
@sorted_list = (7,7,6,5,2,1);
@sorted_list_index = (1,4,2,0,3,5);
Run Code Online (Sandbox Code Playgroud)
我也正在寻找一个非常有效的方法解决这个问题,因为我实际上正在处理一个包含2 ^ 16个条目的长列表.
ike*_*ami 12
如果要对索引进行排序,则需要生成它们
0..$#unsorted
Run Code Online (Sandbox Code Playgroud)
然后你就像其他任何东西一样排序
my @sorted_indexes = sort { $unsorted[$b] <=> $unsorted[$a] } 0..$#unsorted;
Run Code Online (Sandbox Code Playgroud)
可以使用切片来抓取排序的值.
my @sorted_values = @unsorted[ @sorted_indexes ];
Run Code Online (Sandbox Code Playgroud)