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 相关文章推荐
PHP 和 MySQL 开发的 8 个技巧
Oct 09 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
php header示例代码(推荐)
Sep 08 PHP
php Smarty 字符比较代码
Feb 27 PHP
PHP无限分类(树形类)
Sep 28 PHP
PHP中的替代语法简介
Aug 22 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
Mar 21 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 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-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
PHP入门教程之操作符与控制结构流程详解
2016/09/09 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
python实现FTP服务器服务的方法
2017/04/11 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
详解【python】str与json类型转换
2019/04/29 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
使用python turtle画高达
2020/01/19 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
python3中数组逆序输出方法
2020/12/01 Python
python空元组在all中返回结果详解
2020/12/15 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
什么是类的返射机制
2016/02/06 面试题
班级课外活动总结
2014/07/09 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
打架检讨书范文
2015/01/27 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
Python中的 enumerate和zip详情
2022/05/30 Python