一般的な記述方法: 1. 基本的なバブル ソート; 2. 改良されたバブル ソート: 各外側のループが最大の数値を正しい位置に移動するため、内側のループの数を減らすことができ、それによって効率が向上します。 . 挿入ソートとバブルソートの組み合わせ: この記述方法は、ソートされた要素を徐々に前方に移動することにより、ソートされていない要素が徐々に順序付けされるようにする、挿入ソートの考え方を利用しています。この方法は「カクテルシークエンシング」と呼ばれます。
このチュートリアルのオペレーティング システム: 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 サイトの他の関連記事を参照してください。