ソート / Selection Sort(選択ソート)

未整列部分から
最小値を探して、
前へ置く。

未整列領域を最後まで見て最小値を選び、先頭と交換します。交換回数は少なめですが、比較回数は基本的に O(n²) です。

基本は不安定in-place比較回数は多い

目次

このページの目次

このページでわかること

先に知っておくポイント

1. 今の最小候補がどれか
2. 探索中の位置
3. 左から 1 つずつ確定する流れ

概要

概要

未整列領域を最後まで見て最小値を選び、先頭と交換します。交換回数は少なめですが、比較回数は基本的に O(n²) です。

考え方

擬似コード

for i = 0 to n - 2
  minIndex = i
  for j = i + 1 to n - 1
    if a[j] < a[minIndex]
      minIndex = j
  swap a[i], a[minIndex]

要点

要点まとめ

最良時計算量

O(n²)

平均時計算量

O(n²)

最悪時計算量

O(n²)

安定ソートか

いいえ

補足

向いている場面と注意点

Bubble との違い

その場で何度も交換せず、最後に最小値だけを前へ持ってきます。

交換回数

各パスで高々 1 回なので少なく見えます。

比較回数

ただし未整列部分は毎回最後まで見るため、比較回数は減りません。

動きで確認

動きを見てたしかめる

ここでは「今の最小候補がどれか」を見ながら、上で読んだ内容を動きと結びつけます。

探索中最小候補確定済み

次に見る

次に見るページ

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