孤獨者 - 心在黑暗裡旅行 ...... ... 至尊會員
遊蕩的過客 - 枉入紅塵若許年 .. ... - UID
- 18273
- 帖子
- 12122
- 精華
- 1273
- 積分
- 240737
- 金幣
- 492641
- 威望
- 5001
- 推廣
- 0
- 閱讀權限
- 99
- 來自
- 尋覓中
- 註冊時間
- 2006-6-24
- 最後登錄
- 2015-5-27
|
46樓
大 中
小 發表於 2006-10-26 21:40
4.2.12 將陣列以數值大小排序
sort 預設是以 ASCII 順序來排序,但我們可以改變 sort 預設的行為,改用數值大小做為排序依據,如下所示:引用:#! /usr/bin/perl
@test=(1, 4, 5, 22, 9, 101);
@mmm=sort {$a<=>$b} @test;
print join ',', @mmm, "\n\n";
# 輸出結果:
1,4,5,9,22,101,
真的按數值大小來排序了! (升冪) 上式中,若您想要改成降冪,可在 sort 之前再加 reverse 即可:引用:#! /usr/bin/perl
@test=(1, 4, 5, 22, 9, 101);
@mmm=reverse sort {$a<=>$b} @test;
print join ',', @mmm, "\n\n";
# 輸出結果:
101,22,9,5,4,1, 上式,也可以用以下方法:引用:#! /usr/bin/perl
@test=(1, 4, 5, 22, 9, 101);
# 把 $a 和 $b 調換,即成為降冪
@mmm=sort {$b<=>$a} @test;
print join ',', @mmm, "\n\n";
# 輸出結果:
101,22,9,5,4,1, 註:{$a<=>$b} 中 $a, $b 為 sort 預設作用的暫時變數,因此,您的變數最好不要取名為 $a, $b,以免產生不可預期的結果。
|