数値のソート

データをカンマや空白で区切って並べたものをリストと言います。
パラメータリストで与えた数値データを、昇順(降順)にソートして表示します。

プログラムの説明

  1. エディタで sort1.pl を作成して下さい。
    print sort(2,5,3,1,4);
    print "\n";
    print sort {$b <=> $a} (2,5,3,1,4);
    print "\n";
    print reverse(sort {$a <=> $b} (2,5,3,1,4));
    print "\n";
    
  2. 【実行画面】
    C:\Windows\System32>cd \data\perl
    
    C:\DATA\Perl>perl sort1.pl
    12345
    54321
    54321
    
    C:\DATA\Perl>
    
  3. 五個の数値を昇順に並び替えて表示します。
    print sort(2,5,3,1,4);
  4. こんどは降順に表示してみましょう。
    {$b <=> $a} 前が $b 後が $a になっていることに注目して下さい。
    print sort {$b <=> $a} (2,5,3,1,4);
  5. 昇順にソートしてひっくり返して表示しても降順になります。
    reverse はリストを逆順にする関数です。
    print reverse(sort {$a <=> $b} (2,5,3,1,4));
  6. 次のプログラムを実行すると、ソートの結果はどうなるでしょう。
    print sort(200,5,30,1000,400);
    5,30,200,400,1000 の順と思ったら大間違いです。
    何故ならこれらの値は「数値では無く文字」として比較されるからです。
    数値として比較するのであれば次のように({$a<=>$b} を追加)書かなくてはなりません。
    print sort {$a<=>$b} (200,5,30,1000,400);

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Perl)