PHP实现的二分查找算法实例分析


Posted in PHP onDecember 19, 2017

本文实例讲述了PHP实现的二分查找算法。分享给大家供大家参考,具体如下:

二分查找法需要数组是一个有序的数组

假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置.

一。要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比。
二。如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置。
三。反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之后,所以我们需要改变的值是开始位置的值,此时开始位置的值应该是我们此时的中间位置,直到我们找到指定值。
四。或者中间值等于最初的起始位置,或结束位置(此时说明给定值未找到),下面我们来用代码实现~

//循环实现
function getValue($num,$arr)
{
//查找数组的中间位置
$length=count($arr);
$start=0;
$end=$length;
$middle=floor(($start+$end)/2);
//循环判断
while($start>$end-1)
{
if($arr[middle]==$num)
{
return middle+1;
}elseif($arr[middle]<$num)
{
//如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段
//所以起始位置变成当前的middle的值,end位置不变。
$start=$middle;
$middle=floor(($start+$end)/2);
}else{
//反之
$end=$middle;
$middle=floor(($start+$end)/2);
}}
return false;
}
//循环实现
function getValue($num,$arr)
{
//查找数组的中间位置
$length=count($arr);
$start=0;
$end=$length;
$middle=floor(($start+$end)/2);
//循环判断
while($start>$end-1)
{
if($arr[middle]==$num)
{
return middle+1;
}elseif($arr[middle]<$num)
{
//如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段
//所以起始位置变成当前的middle的值,end位置不变。
$start=$middle;
$middle=floor(($start+$end)/2);
}else{
//反之
$end=$middle;
$middle=floor(($start+$end)/2);
}}
return false;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
MySQL相关说明
Jan 15 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 PHP
PHP实现git部署的方法教程
Dec 19 #PHP
PHP递归实现快速排序的方法示例
Dec 18 #PHP
Laravel框架中自定义模板指令总结
Dec 17 #PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 #PHP
PHP7下协程的实现方法详解
Dec 17 #PHP
浅谈PHP实现大流量下抢购方案
Dec 15 #PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 #PHP
You might like
CI框架装载器Loader.php源码分析
2014/11/04 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
js读取cookie方法总结
2014/10/31 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
python self,cls,decorator的理解
2009/07/13 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
python僵尸进程产生的原因
2017/07/21 Python
Python 查看文件的编码格式方法
2017/12/21 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
python多线程http压力测试脚本
2019/06/25 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
写给女生的道歉信
2014/01/14 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
企业员工集体活动方案
2014/08/17 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
2014年电工工作总结
2014/11/20 职场文书
2015年艾滋病宣传活动总结
2015/03/27 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python