php中二分法查找算法实例分析


Posted in PHP onSeptember 22, 2016

本文实例讲述了php中二分法查找算法实现方法。分享给大家供大家参考,具体如下:

二分法查找在高级点的开发可能会用到了,当然在大公司找工作时都会有面试题是这种了,下面我们来看一篇关于二分法查找在php中实现方法,具体的细节如下所示.

二分法(dichotomie) 即一分为二的方法,设[a,b]为R的闭区间,逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点.

例子1:

header('Content-Type: text/html; charset=utf-8;');
$arr = array(2,33,22,1,323,321,28,36,90,123);
sort($arr);
//二分法查找
echo $index = binarySearch($arr,321);
function binarySearch($arr,$key){
 $len = count($arr);
 $mid = -1;
 $start = 0;
 $end  = $len-1;
 while($start<=$end){
 $mid = (int)(($start+$end)/2);
 echo $mid."\n";
 if($arr[$mid] == $key){
  return $mid;
 }else if($arr[$mid] < $key){
  $start = $mid+1;
 }else if($arr[$mid] > $key){
  $end = $mid-1;
 }
 }
}

例子2:

<?php
//search函数 其中$array为数组,$k为要找的值,$low为查找范围的最小键值,$high为查找范围的最大键值
function search($array, $k, $low=0, $high=0)
{
  if(count($array)!=0 and $high == 0) //判断是否为第一次调用
  {
    $high = count($array);
  }
  if($low <= $high) //如果还存在剩余的数组元素
  {
    $mid = intval(($low+$high)/2); //取$low和$high的中间值
    if ($array[$mid] == $k) //如果找到则返回
    {
      return $mid;
    }
    elseif ($k < $array[$mid]) //如果没有找到,则继续查找
    {
      return search($array, $k, $low, $mid-1);
    }
    else
    {
      return search($array, $k, $mid+1, $high);
    }
  }
  return -1;
}
$array = array(4,5,7,8,9,10); //测试search函数
echo search($array, 8); //调用search函数并输出查找结果
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
Aug 17 PHP
Yii2中SqlDataProvider用法示例
Sep 22 #PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 #PHP
php简单压缩css样式示例
Sep 22 #PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 #PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 #PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 #PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 #PHP
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
2018/01/17 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
Python实现的rsa加密算法详解
2018/01/24 Python
python如何读写json数据
2018/03/21 Python
python 文件转成16进制数组的实例
2018/07/09 Python
python实现弹窗祝福效果
2019/04/07 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
pandas的resample重采样的使用
2020/04/24 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
借款协议书范本
2014/04/22 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
机械系毕业生求职信
2014/05/28 职场文书
运动会拉拉队口号
2014/06/09 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
年会主持人开场白台词
2015/05/29 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
Django REST framework 限流功能的使用
2021/06/24 Python
python使用torch随机初始化参数
2022/03/22 Python
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技