Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Algoritma Carian

Algoritma Carian

WBOY
WBOYasal
2024-07-19 00:46:501301semak imbas

Search Algorithms

Memahami Carian Binari dalam PHP

Carian binari ialah algoritma yang lebih cekap untuk mencari elemen dalam tatasusunan yang diisih. Ia berfungsi dengan membahagikan selang carian berulang kali kepada separuh. Berikut ialah pecahan terperinci fungsi Carian binari anda:

function binarySearch(array $arr, float|int $x)
{
    $low = 0;
    $high = count($arr)-1;
    // $midIndex = (int) ($low + ($high - $low)/2);
    $i = 0;
    while($low <= $high){
        $i++;
        $midIndex = (int) ($low + (($high - $low)/2)); //the same as  intdiv($low + $high, 2);

        if($arr[$midIndex] == $x){
            return "The number {$x} was found in index {$midIndex} of the array. The number of iteration was {$i}";
        }elseif($x > $arr[$midIndex]){
            $low = $midIndex +1;
            echo $low."\n";
        }else{
            $high = $midIndex - 1;
        }
    }

return "The number {$x} was not found in the array";


}

echo binarySearch([1,2,3,4,5,6,7,8,9,10,44,45,46,47,48,49,50], 45)

Fungsi binarySearch menerima dua parameter:

  1. $arr: Tatasusunan integer yang diisih.
  2. $x: Nombor yang hendak dicari, yang boleh menjadi apungan atau integer.
  3. $low dimulakan ke indeks pertama tatasusunan.
  4. $high dimulakan ke indeks terakhir tatasusunan.
  5. $i ialah pembilang untuk menjejaki bilangan lelaran.
  6. Gelung sementara berjalan selagi selang carian sah ($rendah kurang daripada atau sama dengan $tinggi).
  7. $midIndex dikira sebagai indeks tengah selang semasa.
  8. Jika elemen tengah sama dengan $x, fungsi mengembalikan indeks dan bilangan lelaran.
  9. Jika $x lebih besar daripada elemen tengah, laraskan $rendah kepada midIndex + 1 (kecilkan carian kepada separuh atas).
  10. Jika $x kurang daripada elemen tengah, laraskan $high ke midIndex - 1 (kecilkan carian ke bahagian bawah).

Memahami Carian Linear dalam PHP

Carian linear ialah salah satu algoritma carian paling mudah digunakan untuk mencari elemen tertentu dalam tatasusunan. Mari kita pecahkan fungsi linearSearch dalam PHP.

function linearSearch(array $arr, float|int $x)
{
    for($i=0; $i < count($arr); $i++){
        if($x === $arr[$i]){
            return "The number {$x} was found in index {$i} of the array\n";
        }
    }

    return "The number {$x} was not found in the array\n";
}

echo linearSearch([1,5,6,3,4,11,3,2], 4);

Fungsi linearSearch menerima dua parameter:

  1. $arr: Tatasusunan integer.
  2. $x: Nombor yang hendak dicari, yang boleh menjadi apungan atau integer.
  3. Gelung for berulang pada setiap elemen tatasusunan. Fungsi count($arr) mengembalikan bilangan elemen dalam tatasusunan.
  4. Di dalam gelung, kod menyemak sama ada elemen semasa ($arr[$i]) bersamaan dengan $x. Jika padanan ditemui, ia mengembalikan mesej yang menunjukkan indeks di mana nombor itu ditemui.
  5. Jika gelung selesai tanpa mencari nombor, fungsi mengembalikan mesej yang menunjukkan bahawa nombor itu tidak ditemui dalam tatasusunan.
  6. Carian linear adalah mudah dan mudah untuk dilaksanakan. Ia secara berurutan menyemak setiap elemen tatasusunan sehingga elemen yang dikehendaki ditemui atau penghujung tatasusunan dicapai. Pendekatan ini mudah tetapi boleh menjadi tidak cekap untuk tatasusunan yang besar, kerana ia mempunyai kerumitan masa O(n).

Atas ialah kandungan terperinci Algoritma Carian. 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