「選択ソート」(2006/03/12 (日) 00:02:28) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
選択ソートを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
選択ソートを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
表示オプション
横に並べて表示:
変化行の前後のみ表示: