【素朴なソートアルゴリズムメニュー】> FINAL問題 バブルソート (paizaランク B 相当) [難易度: 1428 ±19]
※リンク先へ移動するためには[paiza]へのログインが必要です。
バブルソートは、データ列の隣り合う要素を比較し交換することを繰り返すことによりデータ列をソートする手法です。バブルとは「泡」の意味で、ソートの過程でデータが移動する様子が、水中で泡が浮かんでいくように見えることからこの名前がついています。
では、要素数 n の数列を昇順にソートするバブルソートのプログラムを作成してください。上の疑似コードに従って実装してください。アルゴリズムが正しく実装されていることを確認するために、各 i についてその処理が終わった時点での配列を出力してください。
入力値(例)
5
4 1 3 5 2
出力値(例)
1 4 2 3 5
1 2 4 3 5
1 2 3 4 5
1 2 3 4 5
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $n = trim(fgets(STDIN)); $a = explode(" ", trim(fgets(STDIN))); for ($i = 0; $i <= $n-2; $i++) { for ($j = $n-1; $j >= $i+1; $j--) { if ($a[$j-1] > $a[$j]) { $buf = $a[$j-1]; $a[$j-1] = $a[$j]; $a[$j] = $buf; } } echo implode(" ", $a). "\n"; } ?> |