需求:定义一个函数接收一个数组对象和一个要查找的目标元素,函数要返回该目标元素在数组中的索引值,如果目标元素不存在数组中,那么返回-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);
}
}

最新文章

  1. Nginx的继续深入(日志轮询切割,重写,负载均衡等)
  2. Create and Install Timer Job in MOSS 2007
  3. cloudera manager安装spark后使用spark shell编写基于scala的world count
  4. try it, then you know . Emacs
  5. Maven提高篇系列之(四)——使用Profile
  6. DNS(一)之禁用权威域名服务器递归解析
  7. poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
  8. Fix the “No Private Key” Error Message
  9. C++Primer STL算法
  10. Giew与checkBox的结合
  11. 开发者必须知道的HTML5十五大新特性
  12. Asp.Net MVC是否针对每次请求都重新创建一个控制器实例
  13. Yii之权限管理扩展 srbac
  14. 定制化Azure站点Java运行环境(4)
  15. js获取网页高度和宽度(备份)
  16. centos 7 连接 xshell5
  17. Java锁Synchronized对象锁和类锁区别
  18. 关于被删以及限制评价后,免费更换新listing的方法
  19. MFC改变坐标系
  20. 关于矩阵快速幂的用法总结QwQ

热门文章

  1. 自定义Springboot全局异常类
  2. .net Core中如何读取Appsetting配置文件
  3. .NET中一些关键词的意义
  4. 七.数据分页原理,paginator与page对象
  5. 大厂前端工程师教你如何使用css3绘制任意角度扇形+动画
  6. 来看下css边框阴影怎么设置?这些方法掌握后工作更轻松
  7. centos-docker安装及基本使用
  8. 前端开发-css
  9. python入门008
  10. Js 利用正则 在字符串中提取数字、替换非数字字符为指定字符串