読み方:せれくしょんそーと
(selection-sort から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/27 06:55 UTC 版)
|
|
| クラス | ソート |
|---|---|
| データ構造 | 配列 |
| 最悪計算時間 | О(n²) |
| 最良計算時間 | О(n²) |
| 平均計算時間 | О(n²) |
| 最悪空間計算量 | О(n) total, O(1) auxiliary |
選択ソート(英: selection sort)は、ソートのアルゴリズムの一つ。 配列から最小値を探し、配列の先頭要素と入れ替えていくことで並べ替える。
最良時間計算量は O(n2) と遅いため、一般にはクイックソートなどのより高速な方法が利用される。しかし、空間計算量が限られるため他の高速な手法が使えない場合や、ソートする配列が充分小さく、選択ソートが高速に動作することが保証されている場合に利用されることがある。
選択ソートは内部ソートである。また、安定ソートではない。
選択ソートの改良として、ヒープソートが挙げられる。
選択ソートは以下の手順で行う:
上記は昇順への並べ替えだが、降順の場合も同様に、最小値でなく最大値を検索することで実現できる。
また、各ループ毎に最小値と最大値との両方を探し、両端の要素を同時に確定させる手法もあり、double selection sortと呼ばれる。
for I := 1 to N
min := I
for J := I+1 to N
if data[J] < data[min] then
min := J
end if
end for
swap(data[I], data[min])
end for
初期データ: 8 4 3 7 6 5 2 1
太字はソート完了した部分
以下、ソートする配列の要素数を n とする。
要素の比較に関して、各ループで n − 1 回、n − 2 回、……と行われ、処理全体としては
カテゴリ