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:
- Miwiti sawetara telusuran: Miwiti kanthi milih sawetara telusuran saka posisi pisanan
left
nganti posisi pungkasanright
array. - Temokake titik tengah: Etung titik tengah kanthi rata-rata
left
lan posisi tengen; iki titik tengah saka sawetara panelusuran. - Mbandhingake nilai: Mbandhingake nilai ing titik tengah karo nilai target.
- 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.
- 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
- Kita miwiti karo sawetara panelusuran dhisikan saka posisi pisanan
left = 0
kanggo posisi pungkasanright = 6
Uploaded. - Kita ngetung titik tengah(tengah) kanthi rata-rata posisi kiwa lan tengen;
mid = 3
. Nilai ing tengah yaiku 12. - Kita mbandhingake nilai ing
mid(12
) karo nilai target(12) lan nemokake sing cocog, mula kita bali menyang posisi 3. - Algoritma rampung, lan kita ngasilake asil "Nilai 12 ditemokake ing posisi 3."