php数组中的二分查找是什么

舞夢輝影
发布: 2025-12-05 19:10:31
原创
879人浏览过
PHP二分查找需在已排序的数值索引数组中实现,时间复杂度O(log n),手动实现需维护左右边界;不适用于关联数组,PHP无内置二分查找函数。

php数组中的二分查找是什么

PHP 数组中的二分查找是一种在**已排序数组**中快速定位目标值的算法,它不依赖 PHP 内置函数(如 array_search),而是通过反复将搜索范围缩小一半来实现,时间复杂度为 O(log n),比线性遍历(O(n))更高效。

二分查找的前提条件

必须满足两个关键前提,否则结果不可靠:

  • 数组必须是升序或降序排列(通常默认按升序处理)
  • 数组应是连续、数值索引的数组(非关联数组),或至少键名能映射为有序整数序列

手动实现一个基础二分查找函数

以下是一个简洁、可直接使用的升序数组二分查找示例:

function binarySearch($arr, $target) {
    $left = 0;
    $right = count($arr) - 1;
<pre class='brush:php;toolbar:false;'>while ($left <= $right) {
    $mid = (int)(($left + $right) / 2);

    if ($arr[$mid] === $target) {
        return $mid; // 返回索引位置
    } elseif ($arr[$mid] < $target) {
        $left = $mid + 1;
    } else {
        $right = $mid - 1;
    }
}

return -1; // 未找到
登录后复制

}

立即学习PHP免费学习笔记(深入)”;

十天学会PHP教程
十天学会PHP教程

以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。

十天学会PHP教程 482
查看详情 十天学会PHP教程

// 使用示例 $nums = [1, 3, 5, 7, 9, 11]; echo binarySearch($nums, 7); // 输出:3

注意关联数组和非数字键的问题

PHP 关联数组(如 ['a'=>1, 'b'=>3, 'c'=>5])的键不是连续数字,无法直接套用标准二分查找逻辑。如果非要对值做二分查找:

  • 先用 array_values() 提取值为纯索引数组
  • 查找成功后,再用 array_search() 在原数组中找对应键(会损失 O(log n) 优势)
  • 更合理的方式是:若需高频查找,改用哈希结构(如普通 isset($map[$key])

PHP 有没有内置二分查找?

PHP 标准库没有提供直接的二分查找函数**(如 Python 的 bisect)。但有间接支持:

  • array_search() 是线性查找,不保证效率
  • 扩展如 spl 或第三方库(如 ramsey/array-sort)可能封装了相关工具
  • 自定义函数仍是主流做法,简单清晰,便于控制边界和类型比较

基本上就这些。二分查找本身不复杂,但在 PHP 中容易忽略“必须有序”这个硬性前提——无序数组上强行使用,结果是随机且不可预测的。

以上就是php数组中的二分查找是什么的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号