Chinaunix

标题: 数组排序如何实现? [打印本页]

作者: 50644658    时间: 2005-11-16 18:26
标题: 数组排序如何实现?
大家好,我是新来的,弱弱的问一下,
我的数组中有若干个数字,我想把他们按照数字大小排序再输出,如何实现?
sort似乎是按照asc码排序的,不能按照数字大小排序,是么?

作者: POLOGG    时间: 2005-11-16 18:32
原帖由 50644658 于 2005-11-16 18:26 发表
大家好,我是新来的,弱弱的问一下,
我的数组中有若干个数字,我想把他们按照数字大小排序再输出,如何实现?
sort似乎是按照asc码排序的,不能按照数字大小排序,是么?


可以的!可以参考一下
数字比较
0 < 5
10 == 10.0
10 <=> 9.5

字符串比较
'a' lt 'b'
'a' eq 'A'
"joseph" eq "joseph "
"H" cmp "He"

作者: af80    时间: 2005-11-16 18:37
原帖由 50644658 于 2005-11-16 18:26 发表
大家好,我是新来的,弱弱的问一下,
我的数组中有若干个数字,我想把他们按照数字大小排序再输出,如何实现?
sort似乎是按照asc码排序的,不能按照数字大小排序,是么?



sort { $a <=> $b } @array; 升序排列
sort { $b <=> $a } @array; 降序排列
作者: 50644658    时间: 2005-11-16 18:44
原帖由 af80 于 2005-11-16 18:37 发表



sort { $a <=> $b } @array; 升序排列
sort { $b <=> $a } @array; 降序排列

嗯,问题解决鸟,不过这个语法是sort函数带的么?
作者: apile    时间: 2005-11-16 18:47
perldoc -f sort
可以看到.....用法...
作者: 50644658    时间: 2005-11-16 18:57
原帖由 apile 于 2005-11-16 18:47 发表
perldoc -f sort
可以看到.....用法...

全鸟文……哪里有这些东西的中文版本咩?
作者: 兰花仙子    时间: 2005-11-16 19:42
原帖由 50644658 于 2005-11-16 18:57 发表

全鸟文……哪里有这些东西的中文版本咩?


看看偶翻译的"简简单单"讲sort:

http://bbs.chinaunix.net/viewthr ... &extra=page%3D5
作者: 50644658    时间: 2005-11-16 20:41
原帖由 兰花仙子 于 2005-11-16 19:42 发表


看看偶翻译的"简简单单"讲sort:

http://bbs.chinaunix.net/viewthr ... &extra=page%3D5

高手如云呐,先谢过再看
作者: 50644658    时间: 2005-11-16 23:03
为什么sort {$a <=> $b} @array有的时候可以排序,有的时候就不行了呢

[ 本帖最后由 50644658 于 2005-11-17 07:35 编辑 ]
作者: 笨狗    时间: 2005-11-17 07:34
原帖由 50644658 于 2005-11-16 16:03 发表
我快晕了,直接定义的数组@array=(1,2,3,4,5)可以用sort排序
我用push @array,1;……;push @array,5;生成的数组sort不能排序?
这两者有什么区别么?

把你的code贴出来看看
作者: 50644658    时间: 2005-11-17 10:47
我发现问题所在了,用@array= sort {$a <=> $b} @array就好了,不过第一次刚看到af80的答复的时候我直接用的sort {$a <=> $b} @array也是可以对@array排序的,但是后来却无法复现了……
作者: 兰花仙子    时间: 2005-11-17 12:11
原帖由 50644658 于 2005-11-17 10:47 发表
我发现问题所在了,用@array= sort {$a <=> $b} @array就好了,不过第一次刚看到af80的答复的时候我直接用的sort {$a <=> $b} @array也是可以对@array排序的,但是后来却无法复现了……


为什么时灵时不灵?是因为你用sort的上下文环境是变化的。
@array= sort {$a <=> $b} @array;确保计算位于列表上下文里。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2