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
交換:○, 外: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