PHP查找一列有序数组是否包含某值(二分查找)
php中文网最新课程
每日17点准时技术干货分享
//有序数组为$arr = array(2,5,66,87,954,1452,5865);//查找值$str = 1452;//我们先定义 三个参数$front = 0;//一个开始值下标$end = count($arr) - 1;//一个结束值下标$mid = intval(($front + $end) / 2);//中间值下标
$str = 89;//查找值$arr = [1,55,66,89,420];//有序数组$ren = find($arr, $str);echo '<pre>';var_dump($ren);function find($arr, $str){$front = 0;//开始下标$end = count($arr) - 1;//结束下标while($front <= $end){//结束值 大于 开始值 ,反之则退出$mid = intval(($front + $end) / 2);//中间值下标if($str == $arr[$mid]){return $mid;//存在直接返回值的下标}if($str > $arr[$mid]){$front = $mid + 1;//在前面}if($str < $arr[$mid]){$end = $mid - 1;//在后面}}return false;}
▼请点击下方:“阅读原文”,在线查看全部文章内容!
