PHP代码实现二分法查找
2024-09-07 18:10:15
需求:定义一个函数接收一个数组对象和一个要查找的目标元素,函数要返回该目标元素在数组中的索引值,如果目标元素不存在数组中,那么返回-1表示。
//折半查找法(二分法): 使用前提必需是有序的数组。
//如果是从小到大的数组
function halfSearch($arr, $target)
{
//定义三个变量 分别记录最小、最大、中间元素的索引值
$min = 0;
$max = count($arr) - 1;
$mid = floor(($min + $max) / 2); while (true) {
if ($target > $arr[$mid]) {//如果目标值大于中间值,目标值应该在中间值右边
$min = $mid + 1;
} elseif ($target < $arr[$mid]) {//如果目标值小于中间值,目标值应该在中间值左边
$max = $mid - 1;
} else {//如果中间值等于目标值 那么中间值的索引即为要查找的目标元素的索引
return $mid;
} //如果max或者min 发生变化后出现下面这种情况 说明目标值不在该数组范围内
if ($max < $min) {
return -1;
} $mid = floor(($min + $max) / 2);
}
}
最新文章
- Nginx的继续深入(日志轮询切割,重写,负载均衡等)
- Create and Install Timer Job in MOSS 2007
- cloudera manager安装spark后使用spark shell编写基于scala的world count
- try it, then you know . Emacs
- Maven提高篇系列之(四)——使用Profile
- DNS(一)之禁用权威域名服务器递归解析
- poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
- Fix the “No Private Key” Error Message
- C++Primer STL算法
- Giew与checkBox的结合
- 开发者必须知道的HTML5十五大新特性
- Asp.Net MVC是否针对每次请求都重新创建一个控制器实例
- Yii之权限管理扩展 srbac
- 定制化Azure站点Java运行环境(4)
- js获取网页高度和宽度(备份)
- centos 7 连接 xshell5
- Java锁Synchronized对象锁和类锁区别
- 关于被删以及限制评价后,免费更换新listing的方法
- MFC改变坐标系
- 关于矩阵快速幂的用法总结QwQ