選択ソート(Selection Sort)は、データ群の中から基準となる値(最小値または最大値)を見つけ出し、それを未整列部分の先頭要素と入れ替えることを繰り返すソートアルゴリズムです。昇順ソートの具体的な手順は以下の通りです。まず、配列全体(インデックス0からN-1)の中から最小値を探索します。見つかった最小値と、インデックス0の位置にある要素を入れ替えます。これで、0番目の要素は整列済みとして確定します。次に、残りの範囲(インデックス1からN-1)の中から再び最小値を探し、インデックス1の要素と入れ替えます。この「最小値の探索と確定」を、対象範囲が最後の1要素になるまで繰り返します。このアルゴリズムは、配列の状態(すでに整列しているかどうか)に関わらず、常に N(N-1)/2 回の比較を行うため、最悪・最良・平均いずれの場合も時間計算量は O(N^2) となります。データの入れ替え(スワップ)回数が最大でも N-1 回で済むため、要素の移動コストが非常に高い環境(メモリ書き込みが遅いなど)ではバブルソートより効率的ですが、一般的には低速な部類に入り、またソート後の前後関係が維持されない「不安定ソート」である点に注意が必要です。
試験でのポイント