Rumah > pembangunan bahagian belakang > tutorial php > Kaedah pelaksanaan algoritma isihan gelembung dalam PHP

Kaedah pelaksanaan algoritma isihan gelembung dalam PHP

WBOY
Lepaskan: 2023-07-07 09:18:01
asal
1571 orang telah melayarinya

Cara melaksanakan algoritma isihan gelembung dalam PHP

Isih gelembung ialah algoritma isihan yang mudah tetapi tidak cekap yang boleh dilaksanakan dengan mudah dalam PHP. Prinsip pengisihan gelembung adalah untuk membandingkan saiz elemen bersebelahan dalam tatasusunan Jika elemen sebelumnya lebih besar daripada elemen seterusnya, kedudukan mereka ditukar Dengan cara ini, selepas satu pusingan perbandingan, elemen terbesar (atau terkecil). akan tenggelam ke hujung tatasusunan. Kemudian lakukan operasi yang sama pada elemen yang tinggal sehingga keseluruhan tatasusunan diisih. Berikut ialah contoh pelaksanaan PHP bagi algoritma isihan gelembung:

function bubbleSort($array) {
    $len = count($array);
    for ($i = 0; $i < $len - 1; $i++) {
        for ($j = 0; $j < $len - 1 - $i; $j++) {
            if ($array[$j] > $array[$j + 1]) {
                $temp = $array[$j];
                $array[$j] = $array[$j + 1];
                $array[$j + 1] = $temp;
            }
        }
    }
    return $array;
}

// 测试
$data = [3, 9, 2, 8, 5, 1, 4, 7, 6];
$result = bubbleSort($data);
print_r($result);
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan fungsi bernama bubbleSort untuk melaksanakan algoritma isihan gelembung. Fungsi ini menerima tatasusunan untuk diisih sebagai parameter dan mengembalikan tatasusunan yang diisih. Dalam fungsi, kita mula-mula mendapatkan panjang tatasusunan $len melalui fungsi count, dan kemudian gunakan gelung for bersarang untuk melakukan perbandingan dan operasi pertukaran. bubbleSort的函数来实现冒泡排序算法。该函数接受一个待排序的数组作为参数,并返回排序完成的数组。在函数中,我们首先通过count函数获取数组的长度$len,然后使用嵌套的for循环进行比较和交换操作。

外层的for循环控制排序的轮数,每一轮都会将当前未排序部分的最大元素移到最后。内层的for循环用于比较相邻元素的大小,并根据需要进行交换。如果当前元素比下一个元素大,则交换它们的位置。

在上述的代码示例中,我们将一个无序数组$data传递给bubbleSort函数进行排序,并将排序后的结果打印输出。输出结果为Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )

Gelung untuk luar mengawal bilangan pusingan pengisihan Setiap pusingan akan mengalihkan elemen terbesar bahagian semasa yang belum diisih ke penghujung. Gelung for dalam digunakan untuk membandingkan saiz elemen bersebelahan dan menukarnya mengikut keperluan. Jika elemen semasa lebih besar daripada elemen seterusnya, tukar kedudukan mereka.

Dalam contoh kod di atas, kami menghantar tatasusunan tidak tertib $data ke fungsi bubbleSort untuk mengisih dan mencetak hasil yang diisih. Hasil keluaran ialah Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => <p></p>Kerumitan masa algoritma isihan gelembung ialah O(n^2), dengan n ialah panjang tatasusunan. Ini bermakna apabila saiz tatasusunan besar, pengisihan gelembung akan menjadi kurang cekap dan tidak sesuai untuk memproses sejumlah besar data. Tetapi untuk tatasusunan berskala kecil, isihan gelembung ialah algoritma pengisihan yang mudah, mudah difahami dan mudah dilaksanakan. 🎜🎜Untuk meringkaskan, isihan gelembung ialah algoritma pengisihan yang intuitif dan mudah difahami sesuai untuk mengisih data kecil. Dalam PHP, kami boleh melaksanakan pengisihan gelembung melalui kod mudah dan menggunakannya pada projek sebenar. Sudah tentu, apabila berurusan dengan data berskala besar, kita mungkin perlu menggunakan algoritma pengisihan yang lebih cekap untuk meningkatkan prestasi. 🎜

Atas ialah kandungan terperinci Kaedah pelaksanaan algoritma isihan gelembung dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan