数据算法之二分查找。

<?php
/**
* 数据算法,之二分查找
* 要求是数据为索引,查找从索引中间位置进行二分查询查找。
* @ arr $list 数组
* @ string $item 数值
* @ 开源达人 2023-8-20
*/
function bs($list,$item){
    $low = 0;   //数组索引从0 索引开始的位置
    $high = count($list)-1; // 索引最后的位置
   
    while($low <= $high){
        $mid = ($low + $high) / 2; //二分查找 从数据的中间索引进行
        $guess = $list[$mid];  //中间索引的数值


        if($guess == $item){ // 如果这个索的 数值 等于 查找的值
            return $mid; //返回 索引
        }
        if($guess > $item){ //如果 索引的数值 大于 查找的值
            return $mid - 1;   //返回 索引值 减去 1
        }else{
            $low = $mid -1; //开始的索引 减去 1
        }
    }
    return null; //返回 空
}


$mylist = [1,3,4,5,6,7,9];
echo count($mylist);
echo "///////////";
echo bs($mylist,3);

发表评论