Loading

二分查找

二分查找

  • 使用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;
}
posted @ 2019-06-19 14:16  兴宇  阅读(102)  评论(0编辑  收藏  举报