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 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
由php if 想到的些问题
Mar 22 PHP
PHP对象转换为数组函数(递归方法)
Feb 04 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
ucenter通信原理分析
Jan 09 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
一文搞懂PHP中的抽象类和接口
May 25 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
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
基于xcache的配置与使用详解
2013/06/18 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
PHP 8新特性简介
2020/08/18 PHP
js select常用操作控制代码
2010/03/16 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
Vue响应式原理详解
2017/04/18 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
详解JS模块导入导出
2017/12/20 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
Python3基础之条件与循环控制实例解析
2014/08/13 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
python爬取代理ip的示例
2020/12/18 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
纠纷协议书
2014/04/16 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
教师节标语大全
2014/10/07 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python