IT基礎・コンピュータの用語一覧へ
このページの目次

バブルソートとは?

読み方:バブルソート

最終更新:2026/08/18

3秒でわかる

隣り合う二つを比べて順序が逆なら入れ替える並べ替えの手法。速くはないものの動きが追いやすく、計算量を学ぶ入口になります。

もう少し詳しく

どういうものか

バブルソートは、隣り合う二つの要素を比べ、順序が逆であれば入れ替える操作を端から端まで繰り返す並べ替えの手法になる。一周すると最大の値が右端まで移動し、次の周では残りの範囲について同じことを行う。大きな値が泡のように浮き上がっていく様子から、この名前が付いている。

なぜ必要か

実務でバブルソートを書く場面はほとんどない。標準ライブラリの並べ替えのほうが速いためで、それでも学ぶ理由は、計算量の考え方を最初に体感できる題材だからになる。要素が n 個のとき比較回数はおよそ n の 2 乗に比例し、要素が 10 倍になれば時間は 100 倍になる。この感覚を持っているかどうかが、後で扱うマージソートクイックソートの利点を理解できるかを分ける。

具体例

def bubble_sort(a): n = len(a) for i in range(n - 1): swapped = False for j in range(n - 1 - i): if a[j] > a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j] swapped = True if not swapped: # 一度も交換が無ければ<a href="/glossary/alignment" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">整列</a>済み break return a print(bubble_sort([5, 3, 8, 1])) # [1, 3, 5, 8]

途中経過は次のように進む。

開始 5 3 8 1 1周目 3 5 1 8 (8 が右端へ確定) 2周目 3 1 5 8 (5 が確定) 3周目 1 3 5 8 (完成)

つまずきやすいところ

内側のループの範囲を range(n - 1) のまま固定すると、確定済みの右端を毎回比べ直すことになり、無駄が残る。- i を入れて範囲を狭めていく。

交換の書き方も落とし穴になる。a[j] = a[j+1] を先に実行すると元の値が失われるため、C や Java では一時変数を使う。Python では上のように同時代入で書ける。

似た用語との違い

手法平均計算量使いどころ
バブルソートn の 2 乗学習用
挿入ソートn の 2 乗ほぼ整列済みのデータに強い
マージソートn log n安定した速さが要るとき
クイックソートn log n実務の既定手法

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地バブルソートIT基礎

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

このコースが入っている学習分野

この用語を扱うコース

コース

コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

135レッスン
コース

アルゴリズム道場 カメ師範の十の巻

10レッスン
コース

Python入門:基礎文法編

74レッスン
コンピュータサイエンスコースの全編を見る