ENGINEER_GUIDANCE: 単純ソート
実務で頻繁に使われることはありませんが、データ構造と制御構文(ループ・条件分岐)の基礎を学ぶための重要なアルゴリズムです。すべて計算量は O(n2) となります。
1. バブルソート (Bubble Sort)
隣り合う要素を比較し、条件を満たせば交換します。「左から右」へ走査する場合、1周終わるごとに「一番大きな値が右端に確定」します。泡が浮かび上がるように値が移動するためこの名が付きました。
2. 選択ソート (Selection Sort)
未ソートの部分から「最小値(または最大値)」を探し出し、それを先頭の要素と交換します。バブルソートと違い、交換(スワップ)処理は1回の外側ループにつき最大1回しか発生しないため、データの書き換えコストが低い特徴があります。
3. 挿入ソート (Insertion Sort)
トランプの手札を整理するように、新しい要素を「既に整列済みの左側の適切な位置」に差し込んでいきます。もしデータが「ほとんどソート済み」の場合、計算量は O(n) に近づくため、特定の条件下では非常に高速に動作します。
実務での評価
要素数 n が大きくなると、これら O(n2) のアルゴリズムは処理時間が爆発的に増大します。そのため実務のシステム開発では、Javaの
Arrays.sort() のように内部でクイックソート O(n log n)
などを組み合わせたハイブリッドアルゴリズムが採用されます。