Kaedah penulisan biasa: 1. Isih gelembung asas 2. Isih gelembung yang dipertingkatkan: Memandangkan setiap gelung luar akan mengalihkan nombor terbesar ke kedudukan yang betul, bilangan gelung dalam boleh dikurangkan, dengan itu meningkatkan kecekapan ; sort and bubble sort: Kaedah penulisan ini menggunakan idea isihan sisipan, dengan menggerakkan elemen yang diisih ke hadapan secara beransur-ansur, supaya unsur yang tidak diisih disusun secara beransur-ansur. Kaedah ini dipanggil "jujukan koktel."
Sistem pengendalian tutorial ini: sistem Windows 10, komputer Dell G3.
Isihan buih ialah algoritma pengisihan mudah yang berulang kali merentasi tatasusunan untuk diisih, membandingkan dua elemen pada satu masa dan menukarnya jika ia berada dalam susunan yang salah. Kerja melintasi tatasusunan diulang sehingga tiada lagi pertukaran diperlukan, yang bermaksud tatasusunan telah diisih.
Berikut ialah beberapa pelaksanaan Java biasa bagi pengisihan gelembung:
1. Pengisihan gelembung asas:
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 kedudukan yang betul, jadi bilangan gelung dalam boleh dikurangkan, dengan itu meningkatkan kecekapan.
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. Gabungan isihan sisipan dan jenis gelembung: Kaedah penulisan ini menggunakan idea isihan sisipan, dengan menggerakkan elemen yang diisih ke hadapan secara beransur-ansur, supaya unsur yang tidak diisih disusun secara beransur-ansur. Kaedah ini dipanggil "jujukan koktel."
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
Atas ialah kandungan terperinci Beberapa cara biasa untuk menulis jenis gelembung dalam java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!