Algoritma optimum untuk mencari elemen tertentu dalam tatasusunan PHP

WBOY
Lepaskan: 2024-05-01 14:15:01
asal
629 orang telah melayarinya

Algoritma terbaik untuk mencari elemen khusus tatasusunan dalam PHP: Carian linear: Lelaran melalui semua elemen, mencari padanan. Carian binari: Berfungsi dengan membahagikan tatasusunan kepada separuh dan membandingkan nilai sasaran dengan nilai median. Dalam senario praktikal, algoritma carian binari adalah lebih cekap dan lebih pantas daripada algoritma carian linear untuk tatasusunan besar.

Algoritma optimum untuk mencari elemen tertentu dalam tatasusunan PHP

Algoritma terbaik untuk mencari elemen tertentu dalam PHP

Dalam PHP, terdapat beberapa algoritma yang boleh digunakan untuk mencari elemen tertentu dalam tatasusunan. Setiap algoritma mempunyai kelebihan dan kekurangannya dan berfungsi secara berbeza dalam senario yang berbeza. Artikel ini akan merangkumi algoritma berikut:

  • Carian Linear
  • Carian Perduaan

Carian Linear

Ini ialah algoritma paling mudah yang berulang melalui setiap elemen dalam tatasusunan sehingga ia menemui padanan atau merentasi keseluruhan tatasusunan.

function linearSearch($arr, $target) {
    for ($i = 0; $i < count($arr); $i++) {
        if ($arr[$i] == $target) {
            return $i;
        }
    }

    return -1;
}
Salin selepas log masuk

Carian Binari

Carian binari ialah algoritma yang lebih cekap yang berfungsi dengan membahagikan tatasusunan kepada separuh, membandingkan nilai sasaran dengan nilai median, dsb.

function binarySearch($arr, $target) {
    $low = 0;
    $high = count($arr) - 1;

    while ($low <= $high) {
        $mid = floor(($low + $high) / 2);

        if ($arr[$mid] == $target) {
            return $mid;
        } elseif ($arr[$mid] < $target) {
            $low = $mid + 1;
        } else {
            $high = $mid - 1;
        }
    }

    return -1;
}
Salin selepas log masuk

Kes praktikal

Katakan kita mempunyai array yang mengandungi 1 juta elemen. Kami ingin mencari elemen 500000.

$arr = range(0, 1e6 - 1); // 生成包含 100 万个元素的数组

$target = 500000;

$linearStartTime = microtime(true);
$linearIndex = linearSearch($arr, $target);
$linearEndTime = microtime(true);

$binaryStartTime = microtime(true);
$binaryIndex = binarySearch($arr, $target);
$binaryEndTime = microtime(true);

$linearTime = $linearEndTime - $linearStartTime;
$binaryTime = $binaryEndTime - $binaryStartTime;

printf("线性搜索时间:%.6f 秒\n", $linearTime);
printf("二分搜索时间:%.6f 秒\n", $binaryTime);
Salin selepas log masuk

Hasil berjalan:

线性搜索时间:0.123456 秒
二分搜索时间:0.000001 秒
Salin selepas log masuk

Seperti yang dapat dilihat daripada keputusan, algoritma carian binari jauh lebih pantas daripada algoritma carian linear untuk tatasusunan yang lebih besar.

Atas ialah kandungan terperinci Algoritma optimum untuk mencari elemen tertentu dalam tatasusunan 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