Rumah  >  Artikel  >  Java  >  Ketahui kaedah penulisan biasa dan analisis jenis gelembung Java

Ketahui kaedah penulisan biasa dan analisis jenis gelembung Java

WBOY
WBOYasal
2024-01-09 12:02:00952semak imbas

Ketahui kaedah penulisan biasa dan analisis jenis gelembung Java

Kuasai jenis gelembung Java dengan cepat: analisis beberapa kaedah penulisan biasa

Dalam sains komputer, isihan gelembung ialah algoritma pengisihan yang mudah tetapi tidak cekap. Idea asasnya adalah untuk secara beransur-ansur "mengebulkan" elemen yang lebih besar ke hujung tatasusunan dengan membandingkan dan menukar elemen bersebelahan beberapa kali.

Dalam artikel ini, kami akan memperkenalkan beberapa kaedah pengisihan gelembung Java biasa dan memberikan contoh kod khusus untuk membantu pembaca menguasai algoritma pengisihan ini dengan cepat.

  1. Cara asas menulis jenis gelembung

Cara asas menulis jenis gelembung adalah sangat mudah Ia menukar elemen bersebelahan melalui gelung bersarang, dengan itu membandingkan elemen dalam tatasusunan satu demi satu, dan "Mengelegak" hingga akhir. .

Berikut ialah contoh kod Java bagi penulisan asas:

public void bubbleSort(int[] array) {
    int n = array.length;
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (array[j] > array[j+1]) {
                // 交换相邻的元素
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }
}
  1. Tulisan dioptimumkan bagi jenis gelembung

Walaupun jenis gelembung mudah, kecekapannya akan menjadi sangat rendah apabila memproses data berskala besar. Untuk meningkatkan kecekapan pengisihan, kami boleh menambah beberapa langkah pengoptimuman.

Kaedah pengoptimuman biasa ialah menetapkan bit bendera Jika tiada pertukaran berlaku dalam gelung tertentu, iaitu tatasusunan sudah teratur, keluar dari gelung lebih awal.

Berikut ialah contoh kod Java bagi penulisan yang dioptimumkan:

public void optimizedBubbleSort(int[] array) {
    int n = array.length;
    boolean swapped;
    for (int i = 0; i < n-1; i++) {
        swapped = false;
        for (int j = 0; j < n-i-1; j++) {
            if (array[j] > array[j+1]) {
                // 交换相邻的元素
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                swapped = true;
            }
        }
        if (swapped == false)
            break;
    }
}
  1. Tulisan jenis gelembung yang dioptimumkan (mengurangkan lagi bilangan perbandingan)

Dalam penulisan yang dioptimumkan, kita boleh mengurangkan lagi bilangan perbandingan. Oleh kerana setiap pusingan operasi menggelegak akan "mengebulkan" elemen terbesar dalam kawasan tidak tertib ke hujung kawasan tidak tertib, panjang kawasan tidak tertib dalam pusingan seterusnya dikurangkan sebanyak 1.

Berdasarkan pemerhatian ini, kita boleh merekodkan kedudukan swap terakhir lastSwapIndex dalam gelung dalam. Kerana elemen selepas kedudukan ini sudah teratur, tiada perbandingan diperlukan.

Berikut ialah contoh kod Java yang dioptimumkan lagi:

public void furtherOptimizedBubbleSort(int[] array) {
    int n = array.length;
    int lastSwapIndex;

    for (int i = 0; i < n-1; i++) {
        lastSwapIndex = 0;

        for (int j = 0; j < n-1-i; j++) {
            if (array[j] > array[j+1]) {
                // 交换相邻的元素
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
                lastSwapIndex = j+1;
            }
        }

        if (lastSwapIndex == 0)
            break;

        n = lastSwapIndex;
    }
}

Ringkasan:

Artikel ini memperkenalkan kaedah penulisan biasa untuk menguasai pengisihan gelembung Java dengan cepat dan memberikan contoh kod khusus. Melalui pemahaman dan amalan kaedah penulisan ini, semua orang boleh mengawal dan menggunakan algoritma pengisihan klasik ini dengan lebih baik. Sudah tentu, kecekapan isihan gelembung adalah agak rendah Untuk mengisih data berskala besar, adalah disyorkan untuk memilih algoritma pengisihan yang lebih cekap, seperti pengisihan cepat atau pengisihan.

Atas ialah kandungan terperinci Ketahui kaedah penulisan biasa dan analisis jenis gelembung 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