ホームページ >Java >&#&チュートリアル >選択ソートアルゴリズムを理解する (Java の例付き)

選択ソートアルゴリズムを理解する (Java の例付き)

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-18 02:11:09120ブラウズ

選択の並べ替え: ステップバイステップガイド

選択ソートは、単純なソート アルゴリズムです。 リストの未ソート部分から最小の要素を繰り返し検索し、それを先頭に配置します。このプロセスは、リスト全体が並べ替えられるまで続きます。

選択の並べ替えの仕組み

この配列を昇順に並べ替える例を示してみましょう:

Understanding Selection Sort Algorithm (with Examples in Java)

反復 1:

目標は、最小の要素を先頭に配置することです。最初の要素が最小であると仮定することから始めます。

Understanding Selection Sort Algorithm (with Examples in Java)

現在の最小値と後続の各要素を比較し、より小さい要素が見つかった場合は最小値を更新します。

Understanding Selection Sort Algorithm (with Examples in Java)

これは、実際の最小値が特定されるまで続きます。

Understanding Selection Sort Algorithm (with Examples in Java)

最後に、最小要素と最初の要素を交換します。

Understanding Selection Sort Algorithm (with Examples in Java)

最初の要素がソートされました。 後続の反復では、ソートされていない部分のみが考慮されます。

後続の反復:

このプロセスは、ソートされていない残りの要素ごとに繰り返されます。

Understanding Selection Sort Algorithm (with Examples in Java)

アルゴリズムは n-1 回反復します (n は配列の長さです)。 5 回目の反復後 (6 要素配列の場合)、最後の要素が暗黙的に並べ替えられます。

選択ソートの実装 (Java):

<code class="language-java">import java.util.Arrays;

public class SelectionSortTest {
    public static void main(String[] args) {
        int[] arr = {8, 2, 6, 4, 9, 1};
        System.out.println("Unsorted array: " + Arrays.toString(arr));
        selectionSort(arr);
        System.out.println("Sorted array: " + Arrays.toString(arr));
    }

    public static void selectionSort(int[] arr) {
        int size = arr.length;

        // Iterate through the array size-1 times
        for (int i = 0; i < size - 1; i++) {
            int minIndex = i;
            // Find the minimum element in the unsorted part
            for (int j = i + 1; j < size; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            // Swap the minimum element with the first unsorted element
            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}</code>

出力:

ソートされていない配列: [8, 2, 6, 4, 9, 1] ソートされた配列: [1, 2, 4, 6, 8, 9]

複雑さの分析:

  • 時間計算量: すべてのケース (最良、平均、最悪) で O(n²)。 ネストされたループは、入力順序に関係なく、常に固定回数実行されます。
  • 空間の複雑さ: O(1)。 これはインプレース アルゴリズムであり、一定の追加スペースが必要です。

結論:

Selection Sort の時間計算量は O(n²) であるため、大規模なデータセットでは非効率的になります。 小規模な配列や、パフォーマンスよりもシンプルさが優先される状況に最適です。

以上が選択ソートアルゴリズムを理解する (Java の例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。