L-algoritmu tat-Tiftix Binarju huwa metodu effiċjenti biex jinstab valur speċifiku f'firxa magħżula. Dan l-approċċ jaqsam il-firxa f'partijiet iżgħar u kontinwament iqabbel il-valur fil-pożizzjoni tan-nofs tal-firxa tat-tfittxija mal-valur fil-mira. Jekk il-valuri jaqblu, jinstab il-valur mixtieq; inkella, l-algoritmu jkompli jonqos il-firxa tat-tfittxija u jirrepeti l-proċess sakemm jinstab il-valur jew ma jitħallewx aktar elementi biex jiġu eżaminati.
Passi:
- Inizjalizza l-firxa tat-tfittxija: Ibda billi tagħżel il-firxa tat-tfittxija mill-ewwel pożizzjoni
left
sal-aħħar pożizzjoniright
tal-firxa. - Sib il-punt tan-nofs: Ikkalkula l-punt tan-nofs billi tagħmel medja tal-
left
pożizzjonijiet u t-tajba; dan huwa l-punt tan-nofs tal-firxa tat-tfittxija. - Qabbel il-valuri: Qabbel il-valur fil-punt tan-nofs mal-valur fil-mira.
- Immaniġġja r-riżultat tat-tqabbil: Jekk il-valur fil-punt tan-nofs jaqbel mal-valur fil-mira, irritorna din il-pożizzjoni. Jekk il-valur fil-punt tan-nofs huwa inqas mill-valur fil-mira, aġġorna l-pożizzjoni tax-xellug għan-nofs + 1 biex tfittex in-nofs tal-lemin. Jekk il-valur fil-punt tan-nofs huwa akbar mill-valur fil-mira, aġġorna l-pożizzjoni tal-lemin għan-nofs- 1 biex tfittex in-nofs tax-xellug.
- Irrepeti: Irrepeti l-passi 2 sa 4 sakemm jinstab il-valur jew ma jkunx hemm aktar elementi biex tiċċekkja
left > right
.
Vantaġġi u Żvantaġġi
Vantaġġi:
- Prestazzjoni effiċjenti: Il-kumplessità tal-ħin tal-algoritmu hija O(log n), li jagħmilha effiċjenti ħafna għall-immaniġġjar ta' settijiet ta' dejta kbar.
- Effettiva għal settijiet ta' dejta kbar: It-Tiftix Binarju huwa effettiv biex inaqqas in-numru ta' elementi biex jiġu eżaminati malajr għal settijiet ta' dejta kbar.
Żvantaġġi:
- Applikabbli biss għal arrays magħżula: L-algoritmu jaħdem biss fuq arrays magħżula.
- Numru varjabbli ta 'passi: In-numru ta' passi meħtieġa biex jinstab il-valur jiddependi fuq il-pożizzjoni tiegħu fil-firxa, u jista 'jieħu ħafna passi għal valuri qrib it-truf.
Eżempju: Tiftix Binarju biex issib il-valur 12 f'firxa magħżula f'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.";
}
Spjegazzjoni tal-Eżempju
- Nibdew bil-firxa ta 'tfittxija inizjali mill-ewwel pożizzjoni
left = 0
sal-aħħar pożizzjoniright = 6
tal-firxa. - Aħna nikkalkulaw il-punt tan-nofs(nofs) billi nagħmlu medja tal-pożizzjonijiet tax-xellug u tal-lemin;
mid = 3
. Il-valur f'nofs huwa 12. - Aħna nqabblu l-valur fi
mid(12
) mal-valur fil-mira(12) u nsibu taqbila, għalhekk nirritornaw il-pożizzjoni 3. - L-algoritmu jintemm, u noħorġu r-riżultat "Valur 12 misjub fil-pożizzjoni 3."