選択ソート
Wikipediaのほぼ直訳。そろそろ飽きてきたな。っていうかアルゴリズムのシビアな話をPerlでやるなって感じですね。Haskellでやろうかな。
use strict; use warnings; my $trials = 20; my %h = map { int rand $trials => 1 } 1..$trials; my @target = keys %h; print join(" ", @target); print "\n"; @target = sel_sort(@target); sub sel_sort { my @ary = @_; for my $i (0..$#ary-1) { my $min = $i; for my $j ($i+1..$#ary) { $min = $j if $ary[$min] > $ary[$j]; } ($ary[$i], $ary[$min]) = ($ary[$min], $ary[$i]); print join(" ", @ary); print "\n"; } @ary; }
6 11 3 2 12 17 15 14 8 18 19 13 10 2 11 3 6 12 17 15 14 8 18 19 13 10 2 3 11 6 12 17 15 14 8 18 19 13 10 2 3 6 11 12 17 15 14 8 18 19 13 10 2 3 6 8 12 17 15 14 11 18 19 13 10 2 3 6 8 10 17 15 14 11 18 19 13 12 2 3 6 8 10 11 15 14 17 18 19 13 12 2 3 6 8 10 11 12 14 17 18 19 13 15 2 3 6 8 10 11 12 13 17 18 19 14 15 2 3 6 8 10 11 12 13 14 18 19 17 15 2 3 6 8 10 11 12 13 14 15 19 17 18 2 3 6 8 10 11 12 13 14 15 17 19 18 2 3 6 8 10 11 12 13 14 15 17 18 19