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 相关文章推荐
zend framework配置操作数据库实例分析
Dec 06 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
smarty自定义函数用法示例
May 20 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
Yii核心验证器api详解
Nov 23 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
模具专业推荐信
2013/10/30 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
英语邀请函范文
2015/02/02 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
java实现web实时消息推送的七种方案
2022/07/23 Java/Android