Rumah >Java >javaTutorial >Petua pengisihan gelembung Java dan perkongsian pengalaman praktikal

Petua pengisihan gelembung Java dan perkongsian pengalaman praktikal

WBOY
WBOYasal
2024-01-05 13:21:221360semak imbas

Petua pengisihan gelembung Java dan perkongsian pengalaman praktikal

Kuasai kemahiran dan pengalaman praktikal Java bubble sort

1. Pengenalan

Dalam bidang komputer, algoritma adalah pengetahuan asas yang sangat penting. Sebagai salah satu algoritma pengisihan yang paling asas dan mudah, pengisihan gelembung adalah perkara yang mesti dimiliki untuk memulakan algoritma pembelajaran. Artikel ini akan memperkenalkan prinsip asas pengisihan gelembung, serta beberapa teknik dan pengalaman praktikal untuk membantu pembaca menguasai pengisihan gelembung dengan lebih baik dalam bahasa Java.

2. Prinsip asas isihan gelembung

Isih gelembung ialah algoritma yang mencapai pengisihan dengan menukar dua elemen bersebelahan berulang kali. Langkah-langkah khusus adalah seperti berikut:

  1. Bandingkan dua elemen bersebelahan. Jika yang pertama lebih besar daripada yang kedua, tukar kedudukan mereka.
  2. Lakukan perkara yang sama untuk setiap pasangan elemen bersebelahan, bermula dari pasangan pertama hingga pasangan terakhir. Selepas langkah ini selesai, elemen terakhir akan menjadi nombor terbesar.
  3. Ulang langkah di atas untuk semua elemen kecuali yang terakhir.
  4. Ulang langkah 1-3 sehingga pengisihan selesai.

3. Kemahiran mengisih gelembung dan pengalaman praktikal

Dalam aplikasi praktikal, kami boleh menggunakan kemahiran dan pengalaman berikut untuk meningkatkan kecekapan dan kebolehbacaan pengisihan gelembung.

  1. Gunakan pembolehubah Boolean untuk pengoptimuman: Satu ciri isihan gelembung ialah apabila tiada pertukaran berlaku semasa pusingan perbandingan, ini bermakna tatasusunan sudah teratur dan pengisihan boleh ditamatkan lebih awal. Kita boleh menggunakan pembolehubah Boolean swapped untuk merekodkan sama ada pertukaran telah berlaku, dengan itu menyimpan perbandingan yang tidak perlu. swapped来记录是否发生了交换,从而节省不必要的比较。

     boolean sorted = false;
     while (!sorted) {
         sorted = true;
         for (int i = 0; i < array.length - 1; i++) {
             if (array[i] > array[i + 1]) {
                 int temp = array[i];
                 array[i] = array[i + 1];
                 array[i + 1] = temp;
                 sorted = false;
             }
         }
     }
  2. 优化循环次数:在每一轮的比较中,实际上最大的元素已经被“冒泡”到了最后的位置,所以下一轮的循环只需要对前面length - 1

     for (int i = 0; i < array.length - 1; i++) {
         for (int j = 0; j < array.length - 1 - i; j++) {
             if (array[j] > array[j + 1]) {
                 int temp = array[j];
                 array[j] = array[j + 1];
                 array[j + 1] = temp;
             }
         }
     }

  3. Optimumkan bilangan gelung: Dalam setiap pusingan perbandingan, elemen terbesar sebenarnya telah "bergelembung" ke kedudukan terakhir, jadi pusingan gelung seterusnya hanya perlu membandingkan panjang sebelumnya - 1 elemen boleh dibandingkan. Ini mengurangkan bilangan perbandingan sebanyak separuh.

     public static <T extends Comparable<T>> void bubbleSort(T[] array) {
         // 冒泡排序的具体实现
     }

Gunakan generik untuk meningkatkan kebolehgunaan kod anda: Untuk menjadikan algoritma isihan gelembung boleh digunakan pada tatasusunan pelbagai jenis data, kami boleh menggunakan generik untuk menentukan jenis tatasusunan.

public class BubbleSort {
    public static void bubbleSort(int[] array) {
        boolean sorted = false;
        while (!sorted) {
            sorted = true;
            for (int i = 0; i < array.length - 1; i++) {
                if (array[i] > array[i + 1]) {
                    int temp = array[i];
                    array[i] = array[i + 1];
                    array[i + 1] = temp;
                    sorted = false;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {5, 3, 8, 4, 2};
        bubbleSort(array);
        System.out.println(Arrays.toString(array));
    }
}

4. Contoh Kod

Berikut ialah contoh kod isihan gelembung Java yang lengkap:

rrreee

Kod contoh di atas boleh mengisih tatasusunan integer dan mengeluarkan hasilnya.

5. Ringkasan🎜🎜Dengan mempelajari prinsip asas, teknik dan pengalaman praktikal pengisihan gelembung, kita boleh menguasai pelaksanaan pengisihan gelembung dalam bahasa Jawa dengan lebih baik. Walaupun pengisihan gelembung adalah mudah, ia juga merupakan bahagian penting dalam pembelajaran algoritma. Saya harap artikel ini akan membantu pembaca dan dapat memperdalam pemahaman mereka tentang pengisihan gelembung dan menerapkannya secara fleksibel dalam amalan. 🎜

Atas ialah kandungan terperinci Petua pengisihan gelembung Java dan perkongsian pengalaman praktikal. 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