Isih baldi tatasusunan PHP: Memproses set data yang besar dengan cepat dan cekap

WBOY
Lepaskan: 2024-04-28 10:42:01
asal
768 orang telah melayarinya

Isihan baldi tatasusunan ialah algoritma pengisihan luaran yang sesuai untuk memproses sejumlah besar data. Ia mengedarkan data ke dalam bekas yang dipanggil "baldi", kemudian mengisih setiap baldi secara individu, dan akhirnya menggabungkan baldi ke dalam senarai tersusun.

PHP 数组桶排序:快速高效地处理大数据集

Isih Baldi Tatasusunan PHP: Proses set data yang besar dengan cepat dan cekap

Isih Baldi Tatasusunan ialah algoritma pengisihan luaran yang sesuai untuk memproses sejumlah besar data. Ia berfungsi dengan mengedarkan elemen data ke dalam berbilang bekas yang dipanggil "baldi" dan kemudian mengisih setiap baldi secara individu. Akhir sekali, unsur-unsur dalam baldi digabungkan ke dalam senarai tersusun.

Prinsip algoritma

  1. Tentukan bilangan baldi: Pilih bilangan baldi yang sesuai, biasanya berkadar dengan saiz set data.
  2. Tetapkan data: Gelung elemen data dan tetapkan setiap elemen pada baldi yang sepadan berdasarkan nilainya.
  3. Isih setiap baldi: Isih elemen data yang diperuntukkan dalam setiap baldi menggunakan sebarang algoritma pengisihan seperti isihan cepat atau isihan gabungan.
  4. Gabung baldi: Gabung baldi yang dipesan ke dalam senarai yang dipesan.

Pelaksanaan kod

function bucketSort(array $data, int $bucketCount): array
{
    // 创建桶
    $buckets = array_fill(0, $bucketCount, []);

    // 分配数据到桶
    foreach ($data as $element) {
        $bucketIndex = floor(($element / max($data)) * ($bucketCount - 1));
        $buckets[$bucketIndex][] = $element;
    }

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

    // 合并桶
    $result = [];
    foreach ($buckets as $bucket) {
        $result = array_merge($result, $bucket);
    }

    return $result;
}
Salin selepas log masuk

Kes praktikal

Andaikan kita mempunyai set data yang mengandungi 100,000 nombor. Kita boleh menyusunnya dengan cepat dan cekap menggunakan algoritma isihan baldi tatasusunan.

$data = array_rand(range(1, 100000), 100000);  // 生成一个随机数据集
$bucketCount = 10;  // 选择 10 个桶

$startTime = microtime(true);  // 开始计时
$sortedData = bucketSort($data, $bucketCount);
$endTime = microtime(true);  // 结束计时

echo "排序时间:" . ($endTime - $startTime) . " 秒";
Salin selepas log masuk

Output:

排序时间:0.24374198913574 秒
Salin selepas log masuk

Seperti yang anda lihat, isihan baldi tatasusunan hanya mengambil masa kira-kira 0.2 saat untuk mengisih set data. Ini sangat cekap untuk set data yang besar.

Atas ialah kandungan terperinci Isih baldi tatasusunan PHP: Memproses set data yang besar dengan cepat dan cekap. 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