经常在QQ的PHP技术群里看到有人讨论PHP面试的话题,PHP的二分法出现频率很高,今天我们来说说PHP二分法的实现例子
已知一个数组里包含N个数字,使用二分法查出该数据
//声明一个数组
$data = [2,3,4,5];
//获取数组长度
$len = count($data)-1;
2.开始实现代码
 
 
/**
 * @param $start 开始位置
 * @param $len 数组长度
 * @param $data 要查询的数组
 * @param $value 要查询的值
 * @return bool|float 成功返回查询到的值,否则返回false
 */
function search($start, $len, $data,$search)
{
    while($start <= $len )
    {
        $mid = floor(($start + $len)/2);
        if($data[$mid] == $search){
            return $mid;
        }elseif ($data[$mid] < $search){
            $start = $mid+1;
        }else{
            $len = $mid-1;
        }
    }
    return false;
}
3.调用方法查找值为5的
echo search(0, $len, $data,5);
输出结果为:3