PHP实现的二分查找算法实例分析
发布:smiling 来源: PHP粉丝网 添加日期:2021-08-23 11:44:32 浏览: 评论:0
这篇文章主要介绍了PHP实现的二分查找算法,结合实例形式分析了二分查找算法的原理与循环、递归等实现技巧,需要的朋友可以参考下。
本文实例讲述了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;
- }
Tags: PHP二分查找算法
- 上一篇:PHP递归实现快速排序的方法示例
- 下一篇:PHP实现的折半查找算法示例
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)