「バブルソート」(2006/03/04 (土) 23:52:45) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
Perlでバブルソートを作ってみました。
あくまでも基礎情報の学習用です。
for($out_idx = (@list -1); $out_idx >= 1; $out_idx--){
for($in_idx = 0; $in_idx < $out_idx; $in_idx++){
$flg = 0;
if( $list[$in_idx] > $list[$in_idx+1]){
#数値を交換
($list[$in_idx], $list[$in_idx+1])
= ($list[$in_idx+1], $list[$in_idx]);
$flg = 1;
}
if($flg == 1){
print "交換:○, ";
}else{
print "交換:×, ";
}
print "外:".$out_idx;
print ", 内:".$in_idx.", ";
foreach(@list){
print $_." ";
}
print "\n";
}
}
Perlでバブルソートを作ってみました。
あくまでも基礎情報の学習用です。
@list = qw[80 60 40 70 30 10 50 20];
for($out_idx = (@list -1); $out_idx >= 1; $out_idx--){
for($in_idx = 0; $in_idx < $out_idx; $in_idx++){
$flg = 0;
if( $list[$in_idx] > $list[$in_idx+1]){
#数値を交換
($list[$in_idx], $list[$in_idx+1])
= ($list[$in_idx+1], $list[$in_idx]);
$flg = 1;
}
if($flg == 1){
print "交換:○, ";
}else{
print "交換:×, ";
}
print "外:".$out_idx;
print ", 内:".$in_idx.", ";
foreach(@list){
print $_." ";
}
print "\n";
}
}
・出力結果
交換:○, 外:7, 内:0, 60 80 40 70 30 10 50 20
交換:○, 外:7, 内:1, 60 40 80 70 30 10 50 20
交換:○, 外:7, 内:2, 60 40 70 80 30 10 50 20
交換:○, 外:7, 内:3, 60 40 70 30 80 10 50 20
交換:○, 外:7, 内:4, 60 40 70 30 10 80 50 20
交換:○, 外:7, 内:5, 60 40 70 30 10 50 80 20
交換:○, 外:7, 内:6, 60 40 70 30 10 50 20 80
交換:○, 外:6, 内:0, 40 60 70 30 10 50 20 80
交換:×, 外:6, 内:1, 40 60 70 30 10 50 20 80
交換:○, 外:6, 内:2, 40 60 30 70 10 50 20 80
交換:○, 外:6, 内:3, 40 60 30 10 70 50 20 80
交換:○, 外:6, 内:4, 40 60 30 10 50 70 20 80
交換:○, 外:6, 内:5, 40 60 30 10 50 20 70 80
交換:×, 外:5, 内:0, 40 60 30 10 50 20 70 80
交換:○, 外:5, 内:1, 40 30 60 10 50 20 70 80
交換:○, 外:5, 内:2, 40 30 10 60 50 20 70 80
交換:○, 外:5, 内:3, 40 30 10 50 60 20 70 80
交換:○, 外:5, 内:4, 40 30 10 50 20 60 70 80
交換:○, 外:4, 内:0, 30 40 10 50 20 60 70 80
交換:○, 外:4, 内:1, 30 10 40 50 20 60 70 80
交換:×, 外:4, 内:2, 30 10 40 50 20 60 70 80
交換:○, 外:4, 内:3, 30 10 40 20 50 60 70 80
交換:○, 外:3, 内:0, 10 30 40 20 50 60 70 80
交換:×, 外:3, 内:1, 10 30 40 20 50 60 70 80
交換:○, 外:3, 内:2, 10 30 20 40 50 60 70 80
交換:×, 外:2, 内:0, 10 30 20 40 50 60 70 80
交換:○, 外:2, 内:1, 10 20 30 40 50 60 70 80
交換:×, 外:1, 内:0, 10 20 30 40 50 60 70 80
表示オプション
横に並べて表示:
変化行の前後のみ表示: