二分法查找在高级点的开发可能会用到了,当然在大公司找工作时都会有面试题是这种了,下面我们来看一篇关于二分法查找在php中实现方法,具体的细节如下所示。
二分法(dichotomie) 即一分为二的方法. 设[a,b]为r的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点.
例子1
header('content-type: text/html; charset=utf-8;');
$arr = array(2,33,22,1,323,321,28,36,90,123);
sort($arr);
//二分法查找
echo $index = binarysearch($arr,321);
function binarysearch($arr,$key){
$len = count($arr);
$mid = -1;
$start = 0;
$end = $len-1;
while($start $mid = (int)(($start+$end)/2);
echo $mid.\n;
if($arr[$mid] == $key){
return $mid;
}else if($arr[$mid] $start = $mid+1;
}else if($arr[$mid] > $key){
$end = $mid-1;
}
}
}
例子2