常用查找算法

二分查找

遍历

function binSearch($arr,$search){
    $height=count($arr)-1;
    $low=0;
    while($low<=$height){
        $mid=floor(($low+$height)/2);//获取中间数
        if($arr[$mid]==$search){
            return $mid;//返回
        }elseif($arr[$mid]<$search){//当中间值小于所查值时,则$mid左边的值都小于$search,此时要将$mid赋值给$low
            $low=$mid+1;
        }elseif($arr[$mid]>$search){//中间值大于所查值,则$mid右边的所有值都大于$search,此时要将$mid赋值给$height
            $height=$mid-1;
        }
    }
    return "查找失败";
}

递归实现

function binSearch2($arr,$low,$height,$k){
    if($low<=$height){
        $mid=floor(($low+$height)/2);//获取中间数
        if($arr[$mid]==$k){
            return $mid;
        }elseif($arr[$mid]<$k){
            return binSearch2($arr,$mid+1,$height,$k);
        }elseif($arr[$mid]>$k){
            return binSearch2($arr,$low,$mid-1,$k);
        }
    }
    return -1;
}
文章源自编程技术分享-https://mervyn.life/821c169a.html
weinxin
我的微信公众号
微信扫一扫
mervyn
抽奖算法 数据结构与算法

抽奖算法

<?php /* * 经典的概率算法, * 数组中 probability 的总和(基数),基数越大越能体现概率的准确性。 * probability 的总和为100,那么 iPhone XR ...
抽奖算法 数据结构与算法

抽奖算法

<?php /* * 经典的概率算法, * 数组中 probability 的总和(基数),基数越大越能体现概率的准确性。 * probability 的总和为100,那么 iPhone XR ...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: