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 相关文章推荐
ZF等常用php框架中存在的问题
Jan 10 PHP
PHP常用函数小技巧
Sep 11 PHP
PHP学习笔记之二 php入门知识
Jan 12 PHP
php学习之运算符相关概念
Jun 09 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
php导入模块文件分享
Mar 17 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
Yii的Srbac插件用法详解
Jul 14 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
微信小程序和php的登录实现
Apr 01 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
php Smarty 字符比较代码
2011/02/27 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
gulp解决跨域的配置文件问题
2017/06/08 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python文件处理
2016/02/29 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
Python调用服务接口的实例
2019/01/03 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
python 实现表情识别
2020/11/21 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
大学应届生的自我评价
2014/03/06 职场文书
节能环保标语
2014/06/12 职场文书
大专学生求职信
2014/07/04 职场文书
个人合伙协议书范本
2014/10/14 职场文书
行政答辩状范文
2015/05/21 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python