二分查找
来源:互联网 发布:软件测试 patton 招聘 编辑:程序博客网 时间:2024/05/24 01:22
// 非递归// $target是要查找的目标 $arr是已经排序好的数组 function binary(&$arr,$low,$top,$target){ while($low <= $top){//由于php取商是有小数的,所以向下取整,不过也可不加,数组也会取整 $mid = floor(($low+$top)/2); echo $mid."<br>"; if($arr[$mid]==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ $low = $mid+1; }else{ $top = $mid-1; } } return -1; }
//第二种非递归的查找#二分查找 #这也就是说,二分查找的时候必须是排好序的 function binarySearch(Array $arr, $target) { $low = 0; $high = count($arr) - 1; while($low <= $high) { $mid = floor(($low + $high) / 2); #找到元素 if($arr[$mid] == $target) return $mid; #中元素比目标大,查找左部 if($arr[$mid] > $target) $high = $mid - 1; #重元素比目标小,查找右部 if($arr[$mid] < $target) $low = $mid + 1; } #查找失败 return false;}
// 递归 function binaryRecursive(&$arr,$low,$top,$target){ if($low<=$top){ $mid = floor(($low+$top)/2); if($mid==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ return binaryRecursive($arr,$mid+1,$top,$target); }else{ return binaryRecursive($arr,$low,$top-1,$target); } }else{ return -1; } }
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 一个机器人操作系统ROS视频教程
- Sorry,this application cannot run under a Virtual Machine
- 密码设置的原则
- sed基本常用命令
- 阿里云maven仓库
- 二分查找
- 教你使用Box2d制作用蜡笔手绘物体的效果(一)
- 卵用?
- 教你使用Box2d制作用蜡笔手绘物体的效果(二)
- DOM Chapter 07
- Android VideoView 跟随Fragment生命周期切换视频播放,引起的ANR问题解答
- win7下80端口被(Pid=4)占用的解决方法
- 架构师系列一:架构师的职责
- maven阿里开源资源库地址设置