配列内の最小値を取得する - Perl

この記事は2007年05月26日に書かれた物です

とあるリスト(配列)から最小値を取得するにはどうすれば良いだろうか? いろいろな方法が考えられるが、ここでは三種類ほどサンプルをしめす。各関数の処理をそれぞれ見ていただきたい。

サンプル

;#
;#最小値を抽出する
;#
 
use strict;
use List::Util qw(min);
 
#-----------------------------#
#         初期値の設定        #
#-----------------------------#
my @array = (3,4,6,8,1,2,5,7);    #1が最小値
 
#-----------------------------#
#       最大値の取り出し      #
#-----------------------------#
print min1( @array ), "\n";
print min2( @array ), "\n";
print min3( @array ), "\n";
 
 
 
 
#------------------------------------------------
#■最小値を抽出する (その1)
#------------------------------------------------
sub min1 {
    my $min = shift;    #最初の値を入れる
 
    #-- 渡された配列をすべてなめる --#
    foreach(@_){
        $min = $_ if( $min > $_ );    #現在よりも小さい値なら
                                      #入れ替える
    }
 
    return( $min );
}
 
 
#------------------------------------------------
#■最小値を抽出する (その2)
#------------------------------------------------
sub min2 {
    #-- 昇順にソートし、一番最初の値を取り出す --#
    return(
        (sort {$a <=> $b} @_)[0]
    );
}
 
 
#------------------------------------------------
#■最小値を抽出する (その3)
#------------------------------------------------
sub min3 {
    #-- モジュールを利用(Perl5.8以降) --#
    return(
        List::Util::min(@_)
    );
}

関連書籍

chromatic, Damian Conw…
ISBN 4873113148
¥ 9,725

failed to fetch data: unkown error

コメント

コメントを入力. Wiki文法が有効です:
K​ A X X S