Java でのクイック ソート アルゴリズムの実装に関する詳細なステップバイステップ分析

王林
リリース: 2024-02-22 10:42:03
オリジナル
925 人が閲覧しました

Java でのクイック ソート アルゴリズムの実装に関する詳細なステップバイステップ分析

Java でのクイック ソート アルゴリズム実装の詳細なステップバイステップ分析

クイック ソートは、分割統治の考え方を使用した効率的なソート アルゴリズムです。ソートされるシーケンスは、より小さなサブシーケンスに分割され、次にサブシーケンスがソートされ、最後にサブシーケンスがマージされて、順序付けされたシーケンスが得られます。この記事では、クイック ソート アルゴリズムの手順を詳細に紹介し、具体的な Java コード例を示します。

  1. アルゴリズムの手順:

クイック ソート アルゴリズムの基本的な手順は次のとおりです:

1.1 要素をピボット (ピボット) として選択します。これは、最初の 1 つの要素、最後の要素、またはランダムに選択された要素にすることができます。

1.2 並べ替えるシーケンスを 2 つのサブシーケンスに分割します。ベンチマーク以下の要素のシーケンスと、ベンチマークより大きい要素のシーケンスです。

1.3 クイック ソート アルゴリズムを 2 つのサブシーケンスに再帰的に適用します。

1.4 サブシーケンスをマージして、完全な順序付けされたシーケンスを取得します。

  1. Java コード例:

以下は、Java を使用してクイック ソート アルゴリズムを実装する具体的なコード例です:

public class QuickSort {

    public static void quickSort(int[] arr, int low, int high) {
        if (arr == null || arr.length == 0 || low >= high) {
            return;
        }

        // 选择基准元素
        int pivotIndex = partition(arr, low, high);

        // 对基准元素左边的子序列递归排序
        quickSort(arr, low, pivotIndex - 1);

        // 对基准元素右边的子序列递归排序
        quickSort(arr, pivotIndex + 1, high);
    }

    private static int partition(int[] arr, int low, int high) {
        // 选择最后一个元素作为基准
        int pivot = arr[high];

        int i = low - 1;

        for (int j = low; j < high; j++) {
            if (arr[j] <= pivot) {
                i++;
                swap(arr, i, j);
            }
        }

        swap(arr, i + 1, high);

        return i + 1;
    }
    
    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 6, 3, 8, 4, 7};
        int n = arr.length;

        quickSort(arr, 0, n - 1);

        System.out.println("排序后的结果:");
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}
ログイン後にコピー
  1. 例の説明:

上記のコードでは、ソート対象のシーケンスをソートするための quickSort メソッドと、シーケンスを 2 つに分割するための partition メソッドを定義しています。後続。

quickSort メソッドでは、まずシーケンスを並べ替える必要があるかどうかを判断し、次に基本要素を選択し、partition メソッドを呼び出してシーケンスを分割します。次に、シーケンスの長さが 1 になるまで、quickSort メソッドが 2 つのサブシーケンスに再帰的に適用されます。

partition メソッドは、最後の要素をベースラインとして選択し、変数 i を使用してベースライン以下の要素の数を記録します。シーケンスをトラバースすることにより、要素が参照以下である場合、その要素は i が指す位置と交換され、最終的に参照要素が適切な位置に配置されます。

最後に、main 関数を実行して、並べ替えられた結果を出力します。

クイック ソート アルゴリズムの時間計算量は O(nlogn) であり、効率が高くなります。上記の手順を正しく理解して適用することで、クイック ソート アルゴリズムを実際のプログラミングに柔軟に適用して、ソート要件を達成できます。

以上がJava でのクイック ソート アルゴリズムの実装に関する詳細なステップバイステップ分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!