問題 No.1864
複数の数値データが格納された配列の中から、隣り合う要素の大小比較と交換を繰り返し行うことで、全体を昇順や降順に並び替える代表的な整列アルゴリズムはどれか。
【正解の解説】
バブルソート(交換法)
これは水面下の泡(バブル)がポコポコと水面に上がってくるように、一番大きな値が端へ端へと移動していく様子にそっくりです。クラスの背の順に並ぶとき、隣の友達と身長を比べて「君の方が大きいから後ろに行って!」と順番に場所を代わっていくアナログな作業を、そのままコンピュータのプログラムで忠実に再現しているイメージです。
スポンサーリンク
【その他の選択肢の解説】
クイックソート(分割統治法)
隣り合う要素をコツコツ比較するバブルソートとは異なり、全体をパッと二つのグループにざっくり分割して効率よく並び替える点が決定的な違いです。試験では「隣り合う要素の比較」というキーワードが出たらバブルソート、「基準値による分割」ならクイックソートと結びつけるのが正解への近道です。
マージソート(統合法)
隣り合う要素を地道にスワップしていくバブルソートとは異なり、データを一旦最小単位までバラバラにしてからマージ(統合)していく点が大きく異なります。トランプのカードを半分に分けてそれぞれ整列させてから綺麗に混ぜ合わせるようなイメージですが、今回の問題文にある「隣り合う要素の交換」とはアプローチの仕方が根本的に違います。
バイナリサーチ(二分探索法)
バブルソートやクイックソートなどの「並び替え(ソート)」を行う仕組みではなく、すでにお行儀よく並んでいるデータの中からお目当てのものを素早く見つけ出す「探索(サーチ)」の手法です。名簿の真ん中を開いて目的の名前を探す辞書の引き方と同じですが、問題文が求めている「並び替える処理」とは目的が異なるため誤りとなります。