perl-数组排序
刚开始看这个的时候也是看到有点懵
sort()
数组排序使用sort函数,默认为升序。三种语法
1 | sort list #字符排序 |
字符排序
默认排序为按照字符来排的
1 | @array = qw/i have a dream hehe/ |
这里使用到了字符串比较cmp
,下面数字则使用数字比较<=>
数字排序
但是数字却不能这么写,不然排的不对
1 | @array = qw/4 2 12 3 1 5 5 78/ |
$a
,$b
为perl提供的package variable,是默认的,不能修改。他们两的顺序代表这不同的排序方式。1
2sort{$a <=> $b} @array #升序
sort{$b <=> $a} @array #降序当然降序还可以使用
reverse()
函数,对于数据量小的还行,但是如果数据量太大效率就不高,因为已经按照升序排了一次,reverse之后又要全部逆序排列一次。所以为何不使用上面的逆序一次性就排好呢1
reverse sort{$a <=> $b} @array
复杂多排
前面说的都是一维数组的排序方式,如果像oracle中一样有几列数据需要排序呢
如果有三列数据,先按第一列price升序排,然后按照第三列的折扣逆序排
1 | my @products = ( |
||
的作用是:如果前面没有相同的数据,那么不执行后面的,如果前面有相同数据,那么就执行后面的排序