マージソートを実装する前に
今年のPerlアドベントカレンダーあった!!1
Perl Advent Calendar 2013
参加するには、qiitaのアカウントが必要っぽい。。。
そういえば、今年はPerlのアドベントカレンダーないんですかね?
ちょっとやり尽くした感あるから、今更なに書くんだ?みたいのはあるけど。
という訳で、マージソートやってないなーって思って、
コードを漁ってたら何か出てきたので晒そうと思う。
これは、たぶんPerlのsort
が安定であることを確認するために書いたんだと思う。
use strict; use warnings; use v5.10; my @group_A = qw/1 2 3/; my @group_B = qw/4 5 6/; my @data = (); foreach ( @group_B ) { push @data, [ 'B', $_ ]; } foreach ( @group_A ) { push @data, [ 'A', $_ ]; } say '--- before ---'; foreach ( @data ) { say $_->[0], ' : ', $_->[1]; } say "\n", '--- sorted ---'; @data = sort { $a->[0] cmp $b->[0] } @data; foreach ( @data ) { say $_->[0], ' : ', $_->[1]; }
実行すると、こんな感じ。
$ perl aaa.pl
--- before ---
B : 4
B : 5
B : 6
A : 1
A : 2
A : 3
--- sorted ---
A : 1
A : 2
A : 3
B : 4
B : 5
B : 6
見ての通り、文字列でソートしてるんだけど、
ソートの性質が安定の場合は、グループ単位における並び順は維持される。
ただ、これだけ出力されても、安定だの不安定だの分かんないですね。
安定だの不安定だのは、この辺で書きました。
おしまい。
Leave a Comment