Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Algoritma optimum untuk mencari elemen tertentu dalam tatasusunan PHP

Algoritma optimum untuk mencari elemen tertentu dalam tatasusunan PHP

WBOY
WBOYasal
2024-05-01 14:15:01625semak imbas

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;
}

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;
}

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);

Hasil berjalan:

线性搜索时间:0.123456 秒
二分搜索时间:0.000001 秒

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!

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