跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言算法

二分查找算法模板详解:核心原理与边界查找

介绍二分查找算法模板。相比暴力遍历的 O(N),二分查找利用数组有序性和“二段性”将复杂度降为 O(log N)。通过选取中间点比较并舍弃一半区间来快速定位目标。文章详细讲解了循环条件 left <= right 及边界处理逻辑,适用于在排序数组中查找元素及其首尾位置。

全栈工匠发布于 2026/3/29更新于 2026/10/17100 浏览
二分查找算法模板详解:核心原理与边界查找

二分查找

题目描述

题目解析

暴力解法

我们可以从左往右遍历一次数组,如果存在 target 则返回数组的下标,否则返回 -1。

时间复杂度 O(N),因为没有利用数组有序的特点,每次比较只能舍弃一个要比较的数。

二分查找法

所以我们可以把 [1, 4] 这个区间舍弃掉,直接看 [5, 8];仅仅拿 4 和 5 比较一次,就干掉了一大片数。

总结

在一个数组中,随便找一个数,拿这个数和 target 进行比较,并且以拿的这个数分成两个区间,比较后舍弃一部分数,然后再从另一个区间的数中,找下一个要和 target 比较的数。

二分查找算法的本质,就是当数组具有'二段性'时,哪怕这个数组是无序的,只要能在这个数组中发现'二段性',那么也可以使用二分查找。

'二段性'

当我们发现一个规律,然后根据这个规律,选取某一个点,根据这个点,能把数组分成两个区域,根据规律能够有选择地舍弃一部分,进而在另一个部分继续查找的时候,此时,就可以使用二分查找的算法。

我们要从数组中找和 target 进行比较的数,不一定是先从 n/2 的位置开始找,只要找的这个数的点,能把这个区间分成两部分,即满足二段性,进而使用二分查找法。

但是哪怕那么多点可以选择,但是我们都应该先选择 n/2 的位置的点,因为在概率学的数学期望中,我们选择中间的点,时间复杂度是最好的。

  1. nums[mid] < target,left = mid + 1
  2. nums[mid] = target,return mid
  3. nums[mid] > target,right = mid - 1

细节问题

因为当 left = right 的时候,也是要继续判断的,所以 left <= right 为循环判断条件。

目录

  1. 二分查找

更多推荐文章

查看全部
  • Visual C++ 运行库错误修复与安装指南
  • 海康视频插件安装后浏览器提示打开 webcontrol 中间件解决方案
  • Vibe Coding时代,后端程序员开发`前端`的最佳实践
  • 国内如何升级 GitHub Copilot 到专业版
  • Mac 系统下 Typora 安装与激活教程
  • Spring Cloud Sentinel 熔断降级实战:基于保险丝原理
  • Windows 下安装 Python 3.8 与 PyCharm 开发环境配置指南
  • PX4 结合 Mid360 与 Fast-LIO 实现无人机室内定点悬停
  • C++ 四十年演进史与基础入门指南
  • 基于 GraphRAG 打造知识图谱增强的 LLM:以解读《红楼梦》为例
  • 使用 LLama-Factory 微调大模型打造个性化 AI 角色
  • HCL 模拟器中 H3C 防火墙、AC 与交换机的 Web 登录配置
  • OpenClaw Browser Relay 接入指南:AI 操控浏览器实战
  • 使用 Python 和 AI 搭建智能害虫识别助手
  • 分隔链表算法详解:双虚拟头节点拆解合并法
  • OpenClaw 开源 AI 智能体:核心原理、功能特性与本地部署
  • 二分查找实战:旋转排序数组最小值与点名问题
  • 算法精讲:环形链表、数组交集与随机链表复制
  • 基于 Java 与高德地图的县域烟花销售点 GIS 盘点实践
  • Docker Desktop 启动报错 WSL 版本过旧解决方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online