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面向对象全攻略 (八)重载新的方法
Sep 30 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
PHP的博客ping服务代码
Feb 04 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
解析php中如何直接执行SHELL
Jun 28 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php异常处理使用示例
2014/02/25 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
Exitjs获取DataView中图片文件名
2009/11/26 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JS中数组重排序方法
2016/11/11 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
python用户管理系统的实例讲解
2017/12/23 Python
python去除扩展名的实例讲解
2018/04/23 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
幼儿教师思想汇报
2014/01/10 职场文书
工伤赔偿协议书
2014/04/15 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
毕业典礼邀请函
2015/01/31 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers