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 相关文章推荐
PHP生成静态页面详解
Nov 19 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 PHP
php动态函数调用方法
May 21 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 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
DIY实用性框形天线
2021/03/02 无线电
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
日期 时间js控件
2009/05/07 Javascript
javascript Base类 包含基本的方法
2009/07/22 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
python环境下安装opencv库的方法
2020/03/05 Python
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
门卫岗位职责
2013/11/15 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
委托书格式范文
2015/01/28 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android