Bagaimana untuk melaksanakan algoritma isihan baldi dengan PHP

WBOY
Lepaskan: 2023-07-08 14:56:01
asal
615 orang telah melayarinya

Cara melaksanakan algoritma pengisihan baldi dengan PHP

Isihan baldi ialah algoritma pengisihan dengan kerumitan masa linear, yang sesuai untuk situasi di mana julat isihan agak sempit. Idea asasnya ialah membahagikan elemen untuk diisih ke dalam bilangan baldi yang terhad, kemudian mengisih elemen dalam setiap baldi, dan akhirnya menggabungkan elemen dalam setiap baldi mengikut urutan.

Dalam PHP, kami boleh melaksanakan algoritma isihan baldi melalui tatasusunan. Berikut ialah contoh kod untuk pengisihan baldi dalam PHP:

<?php
function bucketSort(array $arr)
{
    // 找出最大值和最小值
    $min = min($arr);
    $max = max($arr);

    // 桶的数量,这里假设为10
    $bucketCount = 10;

    // 计算每个桶的容量
    $bucketSize = ceil(($max - $min + 1) / $bucketCount);

    // 创建桶
    $buckets = array_fill(0, $bucketCount, []);

    // 将元素放入桶中
    foreach ($arr as $num) {
        $bucketIndex = floor(($num - $min) / $bucketSize);
        array_push($buckets[$bucketIndex], $num);
    }

    // 对每个桶进行排序
    foreach ($buckets as &$bucket) {
        sort($bucket);
    }

    // 合并各个桶中的元素
    $sortedArr = [];
    foreach ($buckets as $bucket) {
        $sortedArr = array_merge($sortedArr, $bucket);
    }

    return $sortedArr;
}

// 测试
$arr = [5, 2, 8, 9, 1, 3, 7, 6, 4];
$sortedArr = bucketSort($arr);
echo "排序前: " . implode(', ', $arr) . "
";
echo "排序后: " . implode(', ', $sortedArr) . "
";
?>
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mencari nilai maksimum dan minimum dalam tatasusunan untuk diisih, dan kemudian mengira kapasiti setiap baldi. Selepas mencipta tatasusunan baldi kosong, kami melintasi tatasusunan untuk diisih dan meletakkan setiap elemen ke dalam baldi yang sepadan mengikut nilai elemen. Seterusnya, unsur-unsur dalam setiap baldi disusun. Akhir sekali, kami menggabungkan elemen dalam setiap baldi untuk mendapatkan tatasusunan yang diisih.

10 baldi digunakan dalam contoh kod di atas, anda boleh laraskan bilangan baldi mengikut situasi sebenar. Algoritma pengisihan baldi mempunyai keperluan tertentu untuk julat nilai tatasusunan yang hendak diisih Jika julat nilai terlalu besar, ia mungkin mengakibatkan terlalu banyak atau terlalu sedikit baldi, sekali gus menjejaskan kecekapan algoritma. Oleh itu, dalam aplikasi praktikal, bilangan dan kapasiti baldi perlu ditetapkan secara munasabah mengikut masalah tertentu.

Saya berharap melalui pengenalan dan contoh kod artikel ini, anda boleh memahami idea asas algoritma pengisihan baldi, dan dapat menggunakan PHP untuk melaksanakan fungsi pengisihan baldi yang cekap.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma isihan baldi dengan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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