バブルソートとは(全体像)
バブルソートとは、隣り合うデータを比べて、順番が逆になっていれば入れ替える。これを、くり返して、データを並べ替える(整列する)方法のことだ。
背の順に並ぶときをイメージしよう。隣の人と背を比べて、逆なら入れ替える。これを端から端まで、何度もくり返すと、だんだん順番がそろっていく。
名前の由来は、小さい値が、泡(バブル)のように、だんだん上(先頭)へ浮き上がってくるようすから来ている。
詳しく:仕組みと、速度
ここが心臓部。バブルソートのポイントを押さえよう。
バブルソートのポイント
| 項目 | やさしい意味 |
|---|---|
| やり方 | 隣り合うデータを比べ、逆なら入れ替える(くり返す) |
| 名前の由来 | 小さい値が泡のように上に浮き上がる |
| 実装 | かんたん(教育用によく使われる) |
| 速さ | 遅い(全部を比べるので、データが多いと時間がかかる=O(n²)) |
バブルソートは、作り方(実装)はとても簡単だ。隣どうしを比べて入れ替えるだけなので、分かりやすい。
ただし、速度は遅い。全部のデータどうしを何度も比べるため、データが多いと、とても時間がかかる(O(n²))。ここで一番のポイント。「実装が簡単=速い」ではない。バブルソートは、簡単だが遅い。「バブルソートは高速」と思い込むと誤りになる。だから、小規模なデータや、学習用に使われることが多い。
わかりやすく言い換えると
身近なたとえで整理しよう。
バブルソートは、「背の順に並ぶとき、隣の人と背を比べて、逆なら入れ替える、をくり返すこと」のイメージ。地道だが、確実に並ぶ。
名前の由来は、「小さい値が、泡のように上に浮き上がってくる」ようす。つまり、だんだんそろっていく見た目から来ている。
「実装は簡単だが遅い」というのは、作るのは楽だけど、データが多いと時間がかかること。要するに、簡単さと速さは別、ということだ。
試験のツボ
🔴 一番出る:バブルソートの仕組み
①隣り合うデータを比べて、逆なら入れ替える
②これをくり返して、データを並べ替える
🔴 次に出る:実装は簡単だが遅い
①実装は簡単(教育用によく使われる)
②速度は遅い(全部を比べるのでO(n²))
🟡 押さえると安定:名前の由来
①小さい値が泡(バブル)のように上に浮き上がる
②そのようすから「バブルソート」と呼ばれる
よくある間違い
①「バブルソートは、実装が簡単なので、速度も速い」→ ✗ 実装は簡単だが、速度は遅い(O(n²))。簡単さと速さは別。
②「バブルソートは、データの真ん中から並べ替えていく方法だ」→ ✗ バブルソートは、隣り合うデータを比べて入れ替える方法。真ん中からではない。
③「バブルソートは、データが多いほど、速く並べ替えられる」→ ✗ データが多いほど、比べる回数が増えて時間がかかる(O(n²))。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(バブルソートの仕組み)
バブルソートに関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみである
- 隣り合うデータを比べて、逆なら入れ替える並べ替えの方法である
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 2 だぱん。
バブルソートは、隣り合うデータを比べて、逆なら入れ替える並べ替えの方法なんだぱん。背の順に並ぶイメージだぱん。
選択肢1は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うぱん。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✓ | 隣どうしを比べ入れ替える並べ替えで正しい |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(名前の由来)
バブルソートの名前の由来として、最も適切なものはどれか。
- 社員の給与を計算するときの、泡のような動きから来ているとされる
- 取引先へ請求書を郵送するときの動きから来ているとされている
- 小さい値が泡のように、だんだん上に浮き上がるようすから来ている
- 完成したシステムを宣伝するときの動きから来ているとされている
解答は 3 だぱん。
バブルソートの名前は、小さい値が泡のように、だんだん上に浮き上がるようすから来ているんだぱん。だんだんそろっていく見た目だぱん。
選択肢1の給与、選択肢2の請求書、選択肢4の宣伝は、いずれも違うぱん。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算の動きではない |
| 2 | ✗ | 請求書の郵送の動きではない |
| 3 | ✓ | 小さい値が泡のように浮き上がるで正しい |
| 4 | ✗ | 宣伝の動きではない |
オリジナル問題3(実装と速度)
バブルソートの実装と速度に関する次の記述のうち、最も適切なものはどれか。
- 実装は簡単だが、速度は遅い(全部を比べるのでO(n²))
- 実装も速度も、社員の給与の計算しだいだとされているものだ
- 実装も速度も、取引先への請求書の枚数しだいだとされている
- 実装は簡単で、速度もとても速いものだとされているものである
解答は 1 だぱん。
バブルソートは、実装は簡単だが、速度は遅い(全部を比べるのでO(n²))んだぱん。「簡単だから速い」とまちがえないようにするといいぱん。
選択肢2の給与、選択肢3の請求書、選択肢4の「とても速い」は、いずれも違うぱん。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 実装は簡単だが遅い(O(n²))で正しい |
| 2 | ✗ | 給与計算で決まるのではない |
| 3 | ✗ | 請求書の枚数で決まるのではない |
| 4 | ✗ | 速度は速くない(遅い) |
まとめ
押さえどころ
- 🔴 バブルソート = 隣り合うデータを比べて、逆なら入れ替える、をくり返す並べ替え方法。
- 🔴 実装は簡単だが遅い = 作るのは楽だが、全部を比べるので速度は遅い(O(n²))。
- 🟡 名前の由来 = 小さい値が泡(バブル)のように、だんだん上に浮き上がるようすから。
次に学ぶ
- 2分探索 ── 並べ替え済みのデータを探す方法。ソート(並べ替え)の後に使える。
- 計算量 ── アルゴリズムの速さの目安。O(n²)やO(log n)などで表す。
執筆: SikakuQuest編集部