Rumah  >  Artikel  >  Java  >  Beberapa cara biasa untuk menulis jenis gelembung dalam java

Beberapa cara biasa untuk menulis jenis gelembung dalam java

小老鼠
小老鼠asal
2024-01-04 16:39:21999semak imbas

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."

Beberapa cara biasa untuk menulis jenis gelembung dalam java

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn