ソート / Bubble Sort(バブルソート)

隣同士を比べて、
大きい値を右へ送る。

左から隣接要素を比べ、逆順なら交換します。1 パス終わるごとに未確定部分の最大値が右端へ確定します。

安定ソートin-place最悪 O(n²)

目次

このページの目次

このページでわかること

先に知っておくポイント

1. 比較中の 2 本を見る
2. 交換が起きる条件を見る
3. 右端が 1 本ずつ確定する流れを見る

概要

概要

左から隣接要素を比べ、逆順なら交換します。1 パス終わるごとに未確定部分の最大値が右端へ確定します。

考え方

擬似コード

for i = 0 to n - 2
  for j = 0 to n - 2 - i
    if a[j] > a[j + 1]
      swap a[j], a[j + 1]
  mark last unsorted item as sorted

要点

要点まとめ

最良時計算量

O(n) / 交換がなければ早く終わる

平均時計算量

O(n²)

最悪時計算量

O(n²)

安定ソートか

はい

補足

向いている場面と注意点

なぜ遅いか

ほぼ毎パスで未整列部分をなめるので、比較回数が二次的に増えます。

でも導入向き

比較、交換、確定という基本概念がそのまま見えるからです。

見るべき点

最大値が泡のように右へ浮いていく感覚を掴むと定着します。

動きで確認

動きを見てたしかめる

ここでは「比較中の 2 本を見る」を見ながら、上で読んだ内容を動きと結びつけます。

比較中交換確定済み

次に見る

次に見るページ

比較すると違いがわかりやすいページを先に置いています。