ホームページ  >  記事  >  Java  >  Java でバブル ソートを記述するいくつかの一般的な方法

Java でバブル ソートを記述するいくつかの一般的な方法

小老鼠
小老鼠オリジナル
2024-01-04 16:39:21933ブラウズ

一般的な記述方法: 1. 基本的なバブル ソート; 2. 改良されたバブル ソート: 各外側のループが最大の数値を正しい位置に移動するため、内側のループの数を減らすことができ、それによって効率が向上します。 . 挿入ソートとバブルソートの組み合わせ: この記述方法は、ソートされた要素を徐々に前方に移動することにより、ソートされていない要素が徐々に順序付けされるようにする、挿入ソートの考え方を利用しています。この方法は「カクテルシークエンシング」と呼ばれます。

Java でバブル ソートを記述するいくつかの一般的な方法

このチュートリアルのオペレーティング システム: Windows 10 システム、Dell G3 コンピューター。

バブルソートは、ソート対象のシーケンスを繰り返し走査し、一度に 2 つの要素を比較し、順序が間違っている場合はそれらを入れ替える単純なソート アルゴリズムです。配列を走査する作業は、交換が必要なくなるまで繰り返されます。これは、配列がソートされたことを意味します。

次に、バブル ソートの一般的な Java 実装をいくつか示します:

1. 基本的なバブル ソート:

java

public static void bubbleSort(int[] arr) {  
    for (int i = 0; i < arr.length - 1; i++) {  
        for (int j = 0; j < arr.length - 1 - i; j++) {  
            if (arr[j] > arr[j + 1]) {  
                // swap arr[j+1] and arr[j]  
                int temp = arr[j];  
                arr[j] = arr[j + 1];  
                arr[j + 1] = temp;  
            }  
        }  
    }  
}

2. バブルソートの改良: 各外側ループが最大の数値を正しい位置に移動するため、内側ループの数を減らすことができ、効率が向上します。

java

public static void bubbleSort(int[] arr) {  
    for (int i = 0; i < arr.length - 1; i++) {  
        boolean swapped = false;  
        for (int j = 0; j < arr.length - 1 - i; j++) {  
            if (arr[j] > arr[j + 1]) {  
                // swap arr[j+1] and arr[j]  
                int temp = arr[j];  
                arr[j] = arr[j + 1];  
                arr[j + 1] = temp;  
                swapped = true;  
            }  
        }  
        // If no two elements were swapped by inner loop, then the array is sorted  
        if (!swapped) break;  
    }  
}

3. 挿入ソートとバブルソートの組み合わせ: この記述方法は、ソートされた要素を徐々に前方に移動することによって、挿入ソートのアイデアを利用します。 . 、ソートされていない要素が徐々にソートされるようにします。この方法は「カクテルシークエンシング」と呼ばれます。

java

public static void cocktailSort(int[] arr) {  
    int n = arr.length;  
    boolean swapped; // to flag if any swap has been made in a pass  
    for (int i = 0; i < n - 1; i++) {  
        swapped = false; // assume this pass will do nothing  
        for (int j = 0; j < n - 1 - i; j++) { // start with the second last element and go to the last one  
            if (arr[j] > arr[j + 1]) { // if the current element is greater than the next one, swap them  
                int temp = arr[j]; // swap elements  
                arr[j] = arr[j + 1];  
                arr[j + 1] = temp;  
                swapped = true; // flag to indicate a swap has been made in this pass  
            }  
        }  
        // if no two elements were swapped in this pass, then the array is sorted, so we can stop the sorting process  
        if (!swapped) break; // no swaps means the array is sorted, so we can stop the sorting process. This optimization is not required for correctness, but it can help in practice. If the array is already sorted, the outer loop will keep making passes without making any swaps, so we can stop early. This optimization can be applied to any version of bubble sort

以上がJava でバブル ソートを記述するいくつかの一般的な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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