二分查找最重要是要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
详解:
function binary_search($arr,$number)
{
if(!is_array($arr) || empty($arr)) {
return -1;
}
$lenth = count($arr);
$lower = 0;
$heig = $lenth-1;
while($lower < $heig) {
$middle = intval(($lower + $hiig)/2); // 取出折半的数字 做对比
if($arr[$middle] > $number) {
// 当number小于折半的数的时候 让最小值加1
$lower = $middle+1;
}else if($arr[$middle] < $number) {
// 反之 大于折半的数的时候 让最大值-1
$heig = $middle-1;
}else{
return $middle; //查找到 就返回查找到的值
}
}
return -1;
}