Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan algoritma isihan baldi dengan PHP

Bagaimana untuk melaksanakan algoritma isihan baldi dengan PHP

WBOY
WBOYasal
2023-07-08 14:55:36608semak imbas

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) . "
";
?>

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!

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