Rumah >pembangunan bahagian belakang >tutorial php >Algoritma optimum untuk mencari elemen tertentu dalam tatasusunan PHP
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 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
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!