バブルソート
ばぶるそーと
定義
隣り合う要素を比較して入れ替える操作を繰り返す整列アルゴリズム。
詳細解説
隣接する2要素を比較し、順序が逆なら交換する処理を、交換が発生しなくなるまで繰り返す。大きい値が泡のように後方へ浮き上がる様子から命名。計算量はO(n²)で大規模データには不向きだが、実装が単純で安定ソート(同じ値の順序が保たれる)の特性を持つ。教育目的で最初に学ぶアルゴリズムとして定着している。
「バブルソート」が出る問題
見る人に意図が伝わりやすいデザインにするための四つの原則に関する次の記述中のa、bに入れる字句の適切な組合せはどれか。 [四つの原則] 近接:互いに関連する要素は近づけてグループにする。 [a]:要素を意図したルールに基づき配置する。 反復:要素ごとにデザインルールを繰り返す。 [b]:要素ごとの大小や強弱などの違いを明確にする。 組合せ: ア a=整列 b=価値 イ a=整列 b=対比 ウ a=操作 b=価値 エ a=操作 b=対比
4個の要素から成るデータの並びを、次の手順を繰り返して昇順に整列するとき、整列が終了するまでに(1)から(3)の一連の手順は、何回実行されるか。ここで、最初はデータの並び全体を整列対象とする。データの並び:[27, 42, 33, 12] 〔手順〕(1)整列対象中の要素の最大の値を選び、最後の要素と入れ替える。(2)最後の要素を整列対象から外す。(3)整列対象に要素が1個以上残っていれば、(1)から(3)の一連の手順を実行する。残っていなければ、整列完了なので終了する。
手続sortは、要素数が2以上の整数型の配列を引数numberArrayで受け取り、その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために、処理の途中でjの値とworkArrayの全ての要素を出力する。配列numberArrayを{3,5,1,2,4}とし、手続sortをsort(numberArray)として呼び出したとき、jの値が3と出力された直後のworkArrayの全ての要素の出力はどれか。ここで、配列の要素番号は1から始まる。プログラム概要:numberArrayを複製したworkArrayに対し、j=1から要素数-1まで繰り返し、jから末尾までの要素の中で最小値の要素番号minIndexを求め、workArray[j]とworkArray[minIndex]を交換する選択ソート。
関連用語
よくある質問
Q. バブルソートとは何ですか?
A. 隣り合う要素を比較して入れ替える操作を繰り返す整列アルゴリズム。
Q. IT パスポート試験での位置づけは?
A. テクノロジ系の重要用語です。出題頻度は 1/3 (★1)。 出題頻度は低めですが、周辺知識として理解しておきましょう。