码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • php 二分查询算法实现


    原理:二分查找算法(Binary Search)是一种针对有序数组的查找算法。它的原理是通过将查找区间逐渐缩小一半来快速定位要查找的目标值。

    应用场景:

    1. 数据库或文件系统索引查找:在数据库或文件系统中,索引是有序存储的,可以使用二分查找算法来查找目标值。
    2. 字典等有序数据的查找:若字典中的单词按照字母顺序排序,可以使用二分查找在字典中快速定位某个单词。
    3. 数组中的元素查找:如果数组已经有序,可以使用二分查找在数组中查找某个元素。

    首先,将数组按照升序排列。 然后,确定要查找的目标值。

    接着,设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置。

    在每一次循环中,取指针之间的中间位置的值,并将其与目标值进行比较。

    如果中间值等于目标值,返回该中间索引。

    如果中间值大于目标值,将右指针移到中间位置的前一个位置。

    如果中间值小于目标值,将左指针移到中间位置的后一个位置。

    不断重复以上步骤,直到找到目标值或者左指针大于右指针为止。 最后,如果没有找到目标值,返回-

    1。 下面是一个示例的PHP代码实现:

     

    1. function binarySearch($array, $target) {
    2. $left = 0;
    3. $right = count($array) - 1;
    4. while ($left <= $right) {
    5. $mid = floor(($left + $right) / 2);
    6. if ($array[$mid] == $target) {
    7. return $mid;
    8. }
    9. if ($array[$mid] > $target) {
    10. $right = $mid - 1;
    11. } else {
    12. $left = $mid + 1;
    13. }
    14. }
    15. return -1;
    16. }
    17. // 示例用法
    18. $array = [1, 3, 5, 7, 9];
    19. $target = 7;
    20. $result = binarySearch($array, $target);
    21. echo "目标值的索引为:" . $result;

  • 相关阅读:
    【C++语法讲解】 | 运算符重构 | 三种运算符的重构方式 |代码演示
    用Rust手把手编写一个Proxy(代理), UDP绑定篇
    人工智能第2版学习——知识表示1
    获取在 Windows 10/11 上编辑 PDF 的 6 大方法(免费)
    ubuntu(23):ubuntu系统具有两个“系统盘”的说明:一个盘为系统盘,另一个为被系统文件占用的数据盘--可以格式化并重新分配卷类型和卷名称
    记录一个@Transaction注解引发的bug
    ES客户端(RestHighLevelClient、SpringDataElasticsearch 框架)使用指南
    [附源码]java毕业设计健身房管理系统论文2022
    ctfshow 萌新赛 给她
    Spring——Bean注入几种方式(放入容器)
  • 原文地址:https://blog.csdn.net/weixin_39934453/article/details/134314347
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号