二分查找

独自空忆成欢 提交于 2020-03-25 07:36:38

二分查找

  • 使用PHP描述顺序查找和二分查找(也叫做折半查找)

自定义区间二分查找

function bin_sch($array, $low, $high, $k){
    if ($low <= $high){
        $mid = intval(($low+$high)/2);
        if ($array[$mid] == $k) {
            return $mid;
        }elseif ($k < $array[$mid]) {
            return bin_sch($array, $low, $mid-1, $k);
        }else{
            return bin_sch($array, $mid+1, $high, $k);
        }
    }
    return -1;
}

全区间二分查找

function getNum($num, $arr) {
    $length = count($arr);
    $start = 0;
    $end = $length - 1;
    while ($start <= $end) {
        $middle = floor(($start + $end) / 2);
        echo 'start = '.$start.' and end = '.$end.' middle = '.$middle."\n";
        sleep(1);
        if ($arr[$middle] == $num) {
            return $middle;
        }
        if ($arr[$middle] < $num) {
            $start = $middle + 1;
        } else {
            $end = $middle - 1;
        }
    }
    return false;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!