現在の位置: ホーム> 最新記事一覧> 簡単な選択のための詳細な説明とサンプルソートアルゴリズム

簡単な選択のための詳細な説明とサンプルソートアルゴリズム

gitbox 2025-07-21

シンプルな選択ソートとは何ですか

Simple Selection Sortingは、さまざまなデータを効果的に処理できる直感的で一般的に使用されるソートアルゴリズムです。コアのアイデアは、毎回ソートされる要素から最小値を選択し、ソートされたシーケンスの最後に配置することです。特定のプロセスは次のとおりです。最初に配列全体で最小の要素を選択し、最初の位置を交換し、2回目は残りの要素から最小値を選択し、2番目の位置を交換し、すべての要素がソートされるまで。

アルゴリズムの手順

最初に配列長nを取得し、次にn-1ラウンド選択操作を実行します。選択の各ラウンドでは、アンソートされていない部分から最小値を見つけ、現在のラウンドの開始位置で要素と交換して、ローカル注文を達成し、最終的に全体的なソートを完了します。

アルゴリズムのデモンストレーション

以下は、Algorithmの特定の実行プロセスの理解を容易にするPHP実装の単純な選択のサンプルコードです。

 function selectionSort(&$arr)
{
    $len=count($arr);
    for($i=0;$i<$len-1;$i++)
    {
        $min=$i; // 現在の要素が最小値位置であると仮定します
        for($j=$i+1;$j<$len;$j++) // 後続の要素からより小さな値を見つけます
        {
            if($arr[$j]<$arr[$min])
            {
                $min=$j; // 最小値位置を更新します
            }
        }
        if($min!=$i) // 位置が変更されたときに要素を交換します
        {
            $temp=$arr[$min];
            $arr[$min]=$arr[$i];
            $arr[$i]=$temp;
        }
    }
}

アルゴリズム分析

時間の複雑さ

シンプルな選択ソートには、選択のn-1ラウンドが必要であり、各ラウンドでは残りの要素間で最小値が見つかります。したがって、比較数は約n²/2であり、動きの数は初期データ順序によって異なります。合計時間の複雑さはO(n²)です。それにもかかわらず、データのボリュームが小さいか、基本的に順序付けられている場合、アルゴリズムはまだ実用的です。

スペースの複雑さ

このアルゴリズムは、1つの一時変数のみを使用して交換を支援し、非常に小さなスペースのオーバーヘッドとOの空間的複雑さを備えています。

アルゴリズムの安定性

Simple Selection Sortingは、不安定なソートアルゴリズムです。同じ要素は、ソートプロセス中に位置を交換するため、相対順序を変更する可能性があります。たとえば、シーケンス5 8 5 2 9では、交換の最初のラウンドの後、最初の要素5を持つ最小の要素2の後、5の同じ位置順序が破壊されます。