hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php怎样完成二分查找法【php题目】

2019-11-26PHP问题搜搜PHP网53°c
A+ A-

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怎样完成二分查找法的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php怎样完成二分查找法【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章