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 09 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php中apc缓存使用示例
Dec 25 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 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实现jQuery扩展函数
2009/10/30 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
js charAt的使用示例
2014/02/18 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
2020/09/11 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
tensorflow实现简单逻辑回归
2018/09/07 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
药品开票员岗位职责
2015/04/15 职场文书
行政诉讼答辩状
2015/05/21 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
python munch库的使用解析
2021/05/25 Python