ئىسىمدە قېلىشچە بۇ ئالگورىزىمنى نۇرقۇتتا بىر قېتىم يېزىپ بولغان . ئەينى چاغدا سانلىق مەلۇمات قۇرۇلمىسى دېگەن دەرىسنى ئۆگىنىۋاتقان ئىدىم . ھازىر قارىسام يەنە ئۇنتۇپ قاپتىمەن . شۇنىڭ php دە يېزىپ قايتا بىر ئەسكە ئېلىپ چىقتىم .
جۈپ تەقسىملەپ ئىزدەشنى بىز بۇرۇن بەك كۆپ ئىشلىتەتتۇق . مەسلەن : computer دېگەن سۆزنى ئىزدىمەكچى بولساق c ھەرىپىنى a-z دىن تېپىپ چىقىمىز . لوغەتنى ئوتتۇردىن ئىككىگە بۈلىمىز . قاراپ باقساق c ھەرىپى ئالدىنقى يېرىمىدا ، شۇنىڭ يەنە ئىككىگە بۈلىمىز . مۇشۇ يۇسۇندا بۈلۈپ مېڭىپ ئوتتۇردىكى ھەرىپ c بولغاندا مۇشۇ رايۇندىن ئوخشاش ئۇسۇل بۇيىنچە بىز ئىزدىمەكچى بولغان سۆزلىكنى تاپىمىز .
ئەلۋەتتە بىز كومپىيوتىردىن ئەقىللىق بۇنداق ئاۋارە بۇلۇپ يۈرمەيمىز 😀 بىر ئويلاپلا بۇ سۆزنىڭ تەخمىنەن قايسى ئورۇندا ئىكەنلىكىنى بىلەلەيمىز .
ئاستىدا php دا ئىشقا ئاشۇرۇش ئۇسۇلىنى قالدۇرۇپ قوياي باشقا تىلدا يازغان دوسىتلار ئاستىغا قالدۇرۇپ قويساڭلار بۇلىدۇ .
//binary search
function binarySearch($numbers,$value){
sort($numbers);
$left = 0;
$right = count($numbers) - 1;
$found = false;
while($left<$right){
$mid = intval(($right+$left)/2));
echo "mid:$mid\n";
if($numbers[$mid] == $value){
$found = $mid;
break;
}elseif($numbers[$mid] < $value){
$left = $mid + 1;
}else{
$right = $mid - 1;
}
}
return $found;
}
$numbers = [1,2,5,7,9,133,567,2356];
$value = 2;
echo binarySearch($numbers,$value);