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

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

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

サンプル

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

関連書籍

failed to fetch data: unkown error

Joseph N. Hall, Joshua…
ISBN 4798139815
¥ 4,104

コメント

コメントを入力. Wiki文法が有効です:
L R W W K