Rumah  >  Artikel  >  Java  >  Analisis mendalam tentang pelaksanaan isihan gelembung paling ringkas di Jawa

Analisis mendalam tentang pelaksanaan isihan gelembung paling ringkas di Jawa

WBOY
WBOYasal
2024-01-30 10:03:06933semak imbas

Analisis mendalam tentang pelaksanaan isihan gelembung paling ringkas di Jawa

Penjelasan terperinci tentang cara paling mudah untuk menulis isihan gelembung Java

Isih buih ialah algoritma pengisihan asas dengan membandingkan dan menukar elemen yang lebih besar (atau lebih kecil) akan diisih setelah Bergerak ke atas (atau ke bawah ) ke kedudukan yang betul. Artikel ini akan menerangkan secara terperinci cara paling mudah untuk menulis isihan gelembung dalam Java dan memberikan contoh kod khusus.

Idea asas isihan gelembung adalah untuk membandingkan elemen bersebelahan dari kiri ke kanan, dan jika elemen sebelumnya lebih besar (atau kurang) daripada elemen terakhir, tukar kedudukan mereka. Selepas pusingan perbandingan dan pertukaran sedemikian, elemen terbesar (atau terkecil) akan "bergelembung" ke paling kanan (atau paling kiri). Kemudian lakukan operasi yang sama pada elemen yang tinggal sehingga semua elemen diisih.

Berikut ialah cara paling mudah untuk menulis isihan gelembung dalam Java:

public class BubbleSort {
    public static void bubbleSort(int[] arr) {
        int len = arr.length;
        for (int i = 0; i < len - 1; i++) {
            for (int j = 0; j < len - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    // 交换相邻元素的位置
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 8, 7, 1, 3, 9, 4, 6};
        bubbleSort(arr);
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

Dalam kod di atas, kami mula-mula mentakrifkan kaedah bubbleSort, yang menerima tatasusunan integer sebagai parameter. Dalam kaedah ini, kami menggunakan dua gelung bersarang, gelung luar mengawal bilangan pusingan, dan gelung dalam mengawal perbandingan dan pertukaran dalam setiap pusingan. bubbleSort方法,该方法接收一个整型数组作为参数。在该方法中,我们使用两个嵌套的for循环,外层循环控制轮数,内层循环控制每一轮中的比较和交换。

内层循环的初始值是len - 1 - i,其中len是数组的长度,i是当前轮数。这是因为每一轮都会有一个元素移动到正确的位置,所以每一轮结束后,需要比较和交换的元素数量会减少。

在内层循环中,我们使用arr[j]arr[j + 1]进行比较,如果arr[j]大于arr[j + 1],则交换它们的位置。交换使用一个临时变量temp来暂存arr[j]的值,然后将arr[j + 1]的值赋给arr[j],最后将temp的值赋给arr[j + 1],完成交换。

main方法中,我们创建了一个包含9个整数的数组,并调用bubbleSort

Nilai awal gelung dalam ialah len - 1 - i, dengan len ialah panjang tatasusunan dan i ialah arus nombor bulat. Ini kerana setiap pusingan satu elemen dialihkan ke kedudukan yang betul, jadi selepas setiap pusingan terdapat lebih sedikit elemen untuk dibandingkan dan ditukar.

Dalam gelung dalam, kami menggunakan arr[j] dan arr[j + 1] sebagai perbandingan, jika arr[j] Greater daripada arr[j + 1], kedudukan mereka ditukar. Exchange menggunakan pembolehubah sementara temp untuk menyimpan sementara nilai arr[j] dan kemudian memberikan nilai arr[j + 1] kepada arr[j], dan akhirnya tetapkan nilai temp kepada arr[j + 1] untuk melengkapkan pertukaran.

Dalam kaedah utama, kami mencipta tatasusunan yang mengandungi 9 integer dan memanggil kaedah bubbleSort untuk mengisih tatasusunan. Akhir sekali, lelaran melalui tatasusunan melalui gelung for dan cetak setiap elemen. 🎜🎜Dengan menjalankan kod di atas, kita boleh mendapatkan output berikut: 🎜
1 2 3 4 5 6 7 8 9
🎜Di atas ialah cara paling mudah untuk menulis isihan gelembung dalam Java dan contoh kod khusus. Walaupun isihan gelembung adalah mudah, ia kurang cekap dalam aplikasi praktikal, jadi apabila memproses data berskala besar, anda harus mempertimbangkan untuk menggunakan algoritma isihan yang lebih cekap. 🎜

Atas ialah kandungan terperinci Analisis mendalam tentang pelaksanaan isihan gelembung paling ringkas di Jawa. 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