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 相关文章推荐
IIS6的PHP最佳配置方法
Mar 19 PHP
PHP生成月历代码
Jun 14 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
apache和PHP如何整合在一起
Oct 12 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 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安全上传图片的方法
2015/03/21 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
jQuery 1.0.2
2006/10/11 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
tensorflow常用函数API介绍
2020/04/19 Python
python进行参数传递的方法
2020/05/12 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
个人融资协议书范本两则
2014/10/15 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
十七岁的单车观后感
2015/06/12 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript