Algoritma Panelusuran Biner (Binary Search) ing PHP: Panjelasan, Langkah lan Conto

Algoritma Panelusuran Binary minangka cara sing efisien kanggo nemokake nilai tartamtu ing array sing diurutake. Pendekatan iki mbagi array dadi bagean sing luwih cilik lan terus-terusan mbandhingake nilai ing posisi tengah rentang telusuran karo nilai target. Yen nilai cocog, nilai sing dikarepake ditemokake; yen ora, algoritma terus mbatesi sawetara telusuran lan mbaleni proses nganti nilai ditemokake utawa ora ana unsur liyane sing ditinggalake kanggo mriksa.

Langkah-langkah:

  1. Miwiti sawetara telusuran: Miwiti kanthi milih sawetara telusuran saka posisi pisanan left  nganti posisi pungkasan right  array.
  2. Temokake titik tengah: Etung titik tengah kanthi rata-rata left lan posisi tengen; iki titik tengah saka sawetara panelusuran.
  3. Mbandhingake nilai: Mbandhingake nilai ing titik tengah karo nilai target.
  4. Ngalahake asil perbandingan: Yen nilai ing titik tengah cocog karo nilai target, bali posisi iki. Yen nilai ing titik tengah kurang saka nilai target, nganyari posisi kiwa menyang tengah + 1 kanggo nelusuri sisih tengen. Yen nilai ing titik tengah luwih gedhe tinimbang nilai target, nganyari posisi tengen menyang tengah- 1 kanggo nelusuri sisih kiwa.
  5. Baleni: Baleni langkah 2 nganti 4 nganti nilai ditemokake utawa ora ana unsur liyane sing kudu dipriksa left > right.

Kaluwihan lan cacat

Kaluwihan:

  • Kinerja sing efisien: Kerumitan wektu algoritma yaiku O(log n), dadi efisien banget kanggo nangani dataset gedhe.
  • Efektif kanggo dataset gedhe: Panelusuran Binary efektif kanggo ngurangi jumlah unsur sing bakal ditliti kanthi cepet kanggo dataset gedhe.

Kekurangan:

  • Ditrapake mung kanggo array sing diurutake: Algoritma mung bisa digunakake ing array sing diurutake.
  • Variabel sawetara langkah: Jumlah langkah sing dibutuhake kanggo nemokake nilai gumantung ing posisi ing Uploaded, lan bisa njupuk akeh langkah kanggo nilai cedhak ends.

Conto: Panelusuran Biner kanggo nemokake nilai 12 ing array sing diurutake ing PHP

function binarySearch($arr, $target) {  
    $left = 0;  
    $right = count($arr)- 1;  
  
    while($left <= $right) {  
        $mid = floor(($left + $right) / 2);  
  
        if($arr[$mid] == $target) {  
            return $mid; // Return the position of the value  
        } elseif($arr[$mid] < $target) {  
            $left = $mid + 1;  
        } else {  
            $right = $mid- 1;  
        }  
    }  
  
    return -1; // Value not found  
}  
  
$array = [2, 5, 8, 12, 15, 20, 30];  
$targetValue = 12;  
  
$result = binarySearch($array, $targetValue);  
  
if($result != -1) {  
    echo "Value $targetValue found at position $result.";  
} else {  
    echo "Value $targetValue not found in the array.";  
}  

Katerangan saka Tuladha

  1. Kita miwiti karo sawetara panelusuran dhisikan saka posisi pisanan left = 0 kanggo posisi pungkasan right = 6  Uploaded.
  2. Kita ngetung titik tengah(tengah) kanthi rata-rata posisi kiwa lan tengen; mid = 3. Nilai ing tengah yaiku 12.
  3. Kita mbandhingake nilai ing mid(12) karo nilai target(12) lan nemokake sing cocog, mula kita bali menyang posisi 3.
  4. Algoritma rampung, lan kita ngasilake asil "Nilai 12 ditemokake ing posisi 3."