php 算法(二分法)

  function demo($array,$low,$high,$k){

       if($low<=$high){//判断该数组是否存在

             $mid =  intval(($low+$high)/2 ); //如果上面条件成立,直接取其中间值

             if ($array[$mid] ==  $k){   //如果中间值就是最小值(最理想的情况第一次就取到最小值)
            return $mid;   //直接返回
        }elseif ( $k < $array[$mid]){   //如果小于,以中间值为基准,向前找(前半部分的1/2)
            return  demo($array, $low,  $mid-1, $k);   //递归调用
        }else{     //如果小于,以中间值为基准,向后找(后半部分的1/2)
            return  demo($array, $mid+ 1, $high, $k);  //递归调用 
        }  

}

return -1;

}

猜你喜欢

转载自www.cnblogs.com/yinfeng102030/p/9105421.html