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函数解决SQL injection
Oct 09 PHP
社区(php&amp;&amp;mysql)四
Oct 09 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
Thinkphp单字母函数使用指南
May 08 PHP
CI框架整合smarty步骤详解
May 19 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
PHP匿名函数(闭包函数)详解
Mar 22 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PDO::setAttribute讲解
2019/01/29 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
python使用Matplotlib画饼图
2018/09/25 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
学生学习总结的自我评价
2013/10/22 职场文书
银行学习十八大感想
2014/01/11 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
2014年计生标语
2014/06/23 职场文书
远程培训的心得体会
2014/09/01 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB