各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > PHP

php如何实现二分查找法

管理员 2023-09-05
PHP
134

php如何实现二分查找法

内容导读

收集整理的这篇技术教程文章主要介绍了php如何实现二分查找法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2156字,纯文字阅读大概需要4分钟

内容图文

PHP实现二分查找法

二分查找法需要的数组是一个有序的数组,假设我们的数组是一个递增的数组,首先,我们需要找到数组的中间位置。

一、要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值来和我们的值做对比。

二、如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位

置的值,此时结束位置的值应该是我们此时的中间位置。

三、反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之

后,所以我们需要改变的值是开始位置的值,此时开始位置的值应该是我们此时的中间位置,直到我们找到指定值。

四、或者中间值等于最初的起始位置,或结束位置(此时说明给定值未找到)

下面我们来用代码实现

1、循环实现

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;}

2、递归实现

/*     * 从数组中获取元素值     * @param1 int $num,要查找的目标值     * @param2 array $arr,要查找的数组     * @param3 int $start,查找的起始位置     * @param4 int $end,查找的结束位置     * @return mixed,找到了返回位置,没找到返回false     */     function getValue4($num,$arr,$start = 0,$end = 100){        //采用二分法查找        $middle = floor(($end + $start) / 2);        //判断        if($arr[$middle] == $num){            //已经找到了,递归的出口            return $middle + 1;        }elseif($arr[$middle] < $num){            //要查找的元素在数组的后半段            $start = $middle + 1;            //边界值            if($start >= $end){                //没有找到,但是已经超出边界值,递归出口                return false;            }            //调用自己去查找:递归点            return getValue4($num,$arr,$start,$end);    //getValue4($num,$arr,51,100)        }else{            //要查找的元素在数组的前半段            $end = $middle - 1;            //判断边界值            if($end < 0)return false;            //调用自己:递归点            return getValue4($num,$arr,$start,$end);    //getValue4($num,$arr,0,49)        }        //都没有找到        return false;     }

以上内容仅供参考!

推荐教程:PHP视频教程

以上就是php如何实现二分查找法的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php如何实现二分查找法全部内容,希望文章能够帮你解决php如何实现二分查找法所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 lecms, classcms, fastadmin, pbootcms, phpcms, eyoucms, yzmcms, PHP, xunruicms, jizhicms, dedecms, wordpress, hkcms, yzncms, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部