普通二分查找
function binarySearch($arr,$num){
if(!is_array($arr) || empty($arr)){
return false;
}
$len = count($arr);
$first = 0;
$last = $len - 1;
while($first <= $last){
$m = (int)(($first + $last)/2);
if($num < $arr[$m]){
$last = $m-1;
}else if($num > $arr[$m]){
$first = $m + 1;
}else{
return $m;
}
}
}
递归
function binarySearchRecursion($arr,$num,$first,$last){
$m = (int)(($first + $last)/2);
if($first > $last){
return -1;
}
if($num > $arr[$m]){
return search1($arr,$num,$m+1,$last);
}else if($num < $arr[$m]){
return search1($arr,$num,$first,$m - 1);
}else{
return $m;
}
}