選択ソートをPerlで作ってみました。
基本情報の学習用としてです。
基本情報の学習用としてです。
@list = qw[80 60 40 70 30 10 50 20]; for($out_idx = (@list -1); $out_idx >= 1; $out_idx--){ $max_idx = $out_idx; for($in_idx = 0; $in_idx < $out_idx; $in_idx++){ $flg = 0; if( $list[$in_idx] > $list[$max_idx]){ $max_idx = $in_idx; $flg = 1; } if($flg == 1){ print "設定:○, "; }else{ print "設定:×, "; } print "外:".$out_idx; print ", 内:".$in_idx.", "; print "最大:".$max_idx.", "; foreach(@list){ print $_." "; } print "\n"; } #数値を交換 ($list[$in_idx], $list[$max_idx]) = ($list[$max_idx], $list[$in_idx]); print "最大値設定,"; foreach(@list){ print $_." "; } print "\n"; }
出力結果は以下の通りです。
元データ:80 60 40 70 30 10 50 20
設定:○, 外:7, 内:0, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:1, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:2, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:3, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:4, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:5, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:6, 最大:0, 80 60 40 70 30 10 50 20
最大値設定, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:0, 最大:6, 20 60 40 70 30 10 50 80
設定:○, 外:6, 内:1, 最大:1, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:2, 最大:1, 20 60 40 70 30 10 50 80
設定:○, 外:6, 内:3, 最大:3, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:4, 最大:3, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:5, 最大:3, 20 60 40 70 30 10 50 80
最大値設定, 20 60 40 50 30 10 70 80
設定:○, 外:5, 内:0, 最大:0, 20 60 40 50 30 10 70 80
設定:○, 外:5, 内:1, 最大:1, 20 60 40 50 30 10 70 80
設定:×, 外:5, 内:2, 最大:1, 20 60 40 50 30 10 70 80
設定:×, 外:5, 内:3, 最大:1, 20 60 40 50 30 10 70 80
設定:×, 外:5, 内:4, 最大:1, 20 60 40 50 30 10 70 80
最大値設定, 20 10 40 50 30 60 70 80
設定:×, 外:4, 内:0, 最大:4, 20 10 40 50 30 60 70 80
設定:×, 外:4, 内:1, 最大:4, 20 10 40 50 30 60 70 80
設定:○, 外:4, 内:2, 最大:2, 20 10 40 50 30 60 70 80
設定:○, 外:4, 内:3, 最大:3, 20 10 40 50 30 60 70 80
最大値設定, 20 10 40 30 50 60 70 80
設定:×, 外:3, 内:0, 最大:3, 20 10 40 30 50 60 70 80
設定:×, 外:3, 内:1, 最大:3, 20 10 40 30 50 60 70 80
設定:○, 外:3, 内:2, 最大:2, 20 10 40 30 50 60 70 80
最大値設定, 20 10 30 40 50 60 70 80
設定:×, 外:2, 内:0, 最大:2, 20 10 30 40 50 60 70 80
設定:×, 外:2, 内:1, 最大:2, 20 10 30 40 50 60 70 80
最大値設定, 20 10 30 40 50 60 70 80
設定:○, 外:1, 内:0, 最大:0, 20 10 30 40 50 60 70 80
最大値設定, 10 20 30 40 50 60 70 80
設定:×, 外:7, 内:1, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:2, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:3, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:4, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:5, 最大:0, 80 60 40 70 30 10 50 20
設定:×, 外:7, 内:6, 最大:0, 80 60 40 70 30 10 50 20
最大値設定, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:0, 最大:6, 20 60 40 70 30 10 50 80
設定:○, 外:6, 内:1, 最大:1, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:2, 最大:1, 20 60 40 70 30 10 50 80
設定:○, 外:6, 内:3, 最大:3, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:4, 最大:3, 20 60 40 70 30 10 50 80
設定:×, 外:6, 内:5, 最大:3, 20 60 40 70 30 10 50 80
最大値設定, 20 60 40 50 30 10 70 80
設定:○, 外:5, 内:0, 最大:0, 20 60 40 50 30 10 70 80
設定:○, 外:5, 内:1, 最大:1, 20 60 40 50 30 10 70 80
設定:×, 外:5, 内:2, 最大:1, 20 60 40 50 30 10 70 80
設定:×, 外:5, 内:3, 最大:1, 20 60 40 50 30 10 70 80
設定:×, 外:5, 内:4, 最大:1, 20 60 40 50 30 10 70 80
最大値設定, 20 10 40 50 30 60 70 80
設定:×, 外:4, 内:0, 最大:4, 20 10 40 50 30 60 70 80
設定:×, 外:4, 内:1, 最大:4, 20 10 40 50 30 60 70 80
設定:○, 外:4, 内:2, 最大:2, 20 10 40 50 30 60 70 80
設定:○, 外:4, 内:3, 最大:3, 20 10 40 50 30 60 70 80
最大値設定, 20 10 40 30 50 60 70 80
設定:×, 外:3, 内:0, 最大:3, 20 10 40 30 50 60 70 80
設定:×, 外:3, 内:1, 最大:3, 20 10 40 30 50 60 70 80
設定:○, 外:3, 内:2, 最大:2, 20 10 40 30 50 60 70 80
最大値設定, 20 10 30 40 50 60 70 80
設定:×, 外:2, 内:0, 最大:2, 20 10 30 40 50 60 70 80
設定:×, 外:2, 内:1, 最大:2, 20 10 30 40 50 60 70 80
最大値設定, 20 10 30 40 50 60 70 80
設定:○, 外:1, 内:0, 最大:0, 20 10 30 40 50 60 70 80
最大値設定, 10 20 30 40 50 60 70 80