ホームページ >Java >&#&チュートリアル >Javaは挿入ソートアルゴリズムを記述して結果を出力します

Javaは挿入ソートアルゴリズムを記述して結果を出力します

PHPz
PHPzオリジナル
2024-02-19 16:27:21929ブラウズ

Javaは挿入ソートアルゴリズムを記述して結果を出力します

挿入ソートの Java 実装のサンプル コードと実行結果

挿入ソートは、実際のアプリケーションで広く使用されている、シンプルで一般的に使用される並べ替えアルゴリズムです。この記事では、Java 言語を使用して挿入ソートを実装する方法を紹介し、対応するコード例と実行結果を示します。

挿入ソートの基本的な考え方は、ソートされる配列をソート済み部分とソートされていない部分の 2 つの部分に分割することです。最初はソート済み部分には 1 つの要素しかなく、その後、ソートされていない部分の要素が挿入されます。すべての要素が挿入されるまで、ソートされた部分の適切な位置に挿入されます。

次は、Java で挿入ソートを実装するためのサンプル コードです。

public class InsertionSort {
    public static void insertionSort(int[] arr) {
        int n = arr.length;
        for (int i = 1; i < n; i++) {
            int key = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j -= 1;
            }
            arr[j + 1] = key;
        }
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 10, 8, 3};
        System.out.println("排序前:");
        printArray(arr);
        insertionSort(arr);
        System.out.println("排序后:");
        printArray(arr);
    }

    public static void printArray(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

コード内の insertionSort メソッドは、挿入ソート アルゴリズムを実装します。外側のループを使用して、未ソート部分の各要素を反復処理し、ソート済み部分の適切な位置に要素を挿入します。内側のループは、並べ替えられた部分で適切な挿入位置を検索し、現在の要素より大きい要素を元に移動します。

main メソッドでは、整数配列 arr を定義し、順序付けられていない要素のセットを初期化します。まず、ソート前の配列が出力され、次に insertionSort メソッドが呼び出されてソートされ、最後にソートされた配列が出力されます。

実行結果は次のとおりです。

排序前:
5 2 10 8 3 
排序后:
2 3 5 8 10 

挿入ソート アルゴリズムによる処理後、元の順序なし配列が小さい順から大きい順に正常にソートされたことがわかります。

挿入ソートの時間計算量は O(n^2) であり、小規模なデータ セットを処理する場合のパフォーマンスが向上します。ただし、大規模なデータ セットの場合、挿入ソートのパフォーマンスは大幅に低下し、他の効率的なソート アルゴリズムほど良くはありません。したがって、実際の開発では、状況に応じて適切なソートアルゴリズムを選択する必要があります。

以上がJavaは挿入ソートアルゴリズムを記述して結果を出力しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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