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.
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; } } } }
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; } }
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!