バブルソート
出典: 令和3年度 秋期 応用情報技術者試験 午前 問5 (IPA)
バブルソートの説明として,適切なものはどれか。
- ア ある間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が 1 になるまでこれを繰り返す。
- イ 中間的な基準値を決めて,それよりも大きな値を集めた区分と,小さな値を集めた区分に要素を振り分ける。次に,それぞれの区分の中で同様の操作を繰り返す。
- ウ 隣り合う要素を比較して,大小の順が逆であれば,それらの要素を入れ替えるという操作を繰り返す。
- エ 未整列の部分を順序木にし,そこから最小値を取り出して整列済の部分に移す。この操作を繰り返して,未整列の部分を縮めていく。
正解と解説を見る
正解: ウ
- ア: 間隔を空けた部分列を整列し、間隔を詰めていくのはシェルソートです。
- イ: 基準値より大きいものと小さいものに分けていくのはクイックソートです。
- ウ: 隣り合う要素を比べて逆なら入れ替えるのはバブルソートなので正しい答えです。
- エ: 未整列の部分を順序木 (ヒープ) にして最小値を取り出していくのはヒープソートです。
ポイント
- バブルソート: 隣り合う要素を比べて、順序が逆なら入れ替える、という操作を繰り返して整列します。大きい (または小さい) 値が泡のように端へ移っていきます。
- 計算量は O(n²) で、単純ですが遅い方法です。