PHP实现二分查找算法

二分查找算法的前提:查找的数列为有序数列

/**
     * @param $arr // 查询序列
     * @param $target  //要查找的值
     * @param $low // 序列起始位置
     * @param $high  // 序列结束位置
     * @return false|float|int
     */
function BinarySort($arr,$target,$low,$high)
{
    $len = count($arr);
    if(!$len) return -1;
    $middle = ceil(($low+$high)/2);  // 找到中间位置与目标值作比较
    if($low > $high) return -1;  // !!!很重要,如果查找的数据不存在,这是退出递归的条件
    if($arr[$middle]==$target) return $middle; 
    else if($arr[$middle]<$target) return BinarySort($arr,$target,$middle+1,$high);  // 中间位置所在值大于查找值,则在中间位置之后的序列查询即可
    else return BinarySort($arr,$target,$low,$middle-1);  // 反之,在中间位置之前的序列查找
}

$arr = [1,2,3,5,6,8,9];
echo BinarySort($arr,8,0,count($arr)-1);
posted @   米饭!大米饭  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示