|
|
|
配列をソート( 並び替え )する
配列のソートには色々なアルゴリズムがありますが、配列をソートするたびにそれらを一から作成するのはとても非効率的です。 Perlでは配列の並び替えを行うための関数 sort を使う事で簡単に配列のソートを行う事が出来ます。
sort関数は引数で与えられた配列をソートして、ソート後の配列を返します。 デフォルトでは文字列として比較して昇順に並び替えを行いますが、どのような順序で並び替えるかをブロックで指定する事が出来ます。
[文字昇順でソート(ブロックを省略)]
@array = ('f', 'e', 'd', 'c', 'b', 'a');
@sortedarray = sort @array;
# ('a', 'b', 'c', 'd', 'e', 'f') が格納
[文字昇順でソート]
@array = ('f', 'e', 'd', 'c', 'b', 'a');
@sortedarray = sort { $a cmp $b } @array;
# ('a', 'b', 'c', 'd', 'e', 'f') が格納
[文字逆順でソート]
@array = ('a', 'b', 'c', 'd', 'e', 'f');
@sortedarray = sort { $b cmp $a } @array;
# ('f', 'e', 'd', 'c', 'b', 'a') が格納
[数値昇順でソート]
@array = (6, 5, 4, 3, 2, 1);
@sortedarray = sort { $a <=> $b } @array;
# (1, 2, 3, 4, 5, 6) が格納
[数値逆順でソート]
@array = (1, 2, 3, 4, 5, 6);
@sortedarray = sort { $b <=> $a } @array;
# (6, 5, 4, 3, 2, 1) が格納
|