arrays - Perl中如何对数字进行排序

标签 arrays perl sorting

print "@_\n";
4109 4121 6823 12967 12971 14003 20186
如何在 Perl 中对其进行排序?
使用 @sorted = sort(@_);给我一个字母顺序:
13041 13045 14003 20186 4109 4121 6823
如何获得数字排序? Perl 是否具有用于合并排序、插入排序等的内置函数?

最佳答案

您可以将自定义比较函数传递给 Perl 的排序例程。只需使用:

@sorted = sort { $a <=> $b } @unsorted;
sort function 接受自定义比较函数作为其第一个参数,以代码块的形式。 {...}部分就是这个代码块(见 http://perldoc.perl.org/functions/sort.html )。
sort每当需要比较要排序的数组中的两个元素时,都会调用此自定义比较函数。 sort总是将两个值作为 $a 进行比较, $b ,并且比较函数必须返回比较的结果。在这种情况下,它只是使用运算符进行数字比较(参见 http://perldoc.perl.org/perlop.html#Equality-Operators ),这可能是为此目的而创建的:-)。

无耻地从“Perl Cookbook”窃取的解决方案,第04章第15章(买书-值得!)

关于arrays - Perl中如何对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574336/

相关文章:

javascript - 按第二个数组的顺序排序

arrays - 如果数组有,则可以在 O(n) 中排序

arrays - 如何提高 MongoDB 批量性能?

php - 如何创建 PHP 多维数组

Unicode 字符串上的正则表达式是按调试器的预期解释的,而不是按程序的预期解释的

xml - 在perl中将元素添加到xml文件

Perl 中的正则表达式组 : how to capture elements into array from regex group that matches unknown number of/multiple/variable occurrences from a string?

c - Ncurses - 当函数调用中存在多个参数时,为什么不使用 mvprintw() 打印字符串不起作用?

c++ - 使用 std::unique_ptr 创建对象数组

java - 为什么我的 java 中的 arraySort 无法正常工作?