我需要对数字进行排序,但我无法按照我想要的方式工作.
输入示例:
15.12
16.1
15.2
15.1
Run Code Online (Sandbox Code Playgroud)
预期产量:
15.1
15.2
15.12
16.1
Run Code Online (Sandbox Code Playgroud)
我尝试了正常的排序,也Sort::Naturally为此.两者都没有给我预期的输出.
我也知道我可以按照以下方式进行排序,以我想要的方式对其进行排序.
my @sorted =
map sprintf('%vd', $_),
sort
map join('', map chr, split /\./),
@data;
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一些我可以使用的预先存在的模块.
提前致谢.
如果我理解正确,你想首先按整数值对数字进行排序,然后将小数部分视为整数本身,因此.12大于.2示例中的数字(12> 2).
我认为最自我解释的方法是使用自定义排序,按照你的说法分割后:
@sorted = sort {
my ($a1, $a2) = split /\./, $a;
my ($b1, $b2) = split /\./, $b;
$a1 <=> $b1 or $a2 <=> $b2
} @numbers;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
620 次 |
| 最近记录: |