news 2026/4/3 4:17:11

搜索算法:二分查找

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
搜索算法:二分查找

二分查找(Binary Search)是一种高效的搜索算法,适用于已排序的数组或列表。通过每次将搜索范围减半,其时间复杂度为O(log n),远优于线性查找的O(n)


快速理解

二分查找(也叫折半查找)的思路特别像我们玩 “猜数字” 游戏:

  • 比如猜 1~100 之间的数字,你先猜 50,对方说 “大了”,那你就知道答案在 1~49 之间;
  • 再猜 25,对方说 “小了”,就知道答案在 26~49 之间;
  • 每次都把查找范围缩小一半,直到找到目标值,或确定目标值不存在。

因此只要你的数据是有序的,二分查找就是最高效的选择。

算法核心思想

  1. 确定搜索范围:初始化左边界left为 0,右边界right为数组长度减 1。
  2. 计算中间索引:取中间位置mid = left + (right - left) // 2(避免整数溢出)。
  3. 比较目标值
    • arr[mid] == target,返回mid
    • arr[mid] < target,缩小范围至右半部分(left = mid + 1)。
    • arr[mid] > target,缩小范围至左半部分(right = mid - 1)。
  4. 终止条件(left <= right):当left > right时,说明目标不存在,返回-1.

代码实现(基础版java)

class Solution { // 准备一个无序数组,先排序(二分查找必须用有序数组!) public int search(int[] nums, int target) { // 1. 初始化左右边界 int left = 0,right = nums.length - 1; // 2. 循环查找 while(left<=right){ // 计算中间索引,避免溢出 int mid = (right + left)/2 ; int num = nums[mid]; if(num == target) { // 找到目标,返回索引 return mid; }else if(target > num){ // 目标在右半区,左边界右移 left = mid + 1; }else { // 目标在左半区,右边界左移 right = mid - 1; } } // 没找到返回-1 return -1; } }

提醒(tips):

  • 必须先排序!二分查找的前提是数组有序。如果数组是乱的,比如[5,2,9],直接用二分查找会得到错误结果。一定要先用Arrays.sort()把数组排好序。

  • mid 的计算方式不要写成mid = (left + right) / 2,当leftright都是很大的数时,会导致整数溢出。正确写法是mid = left + (right - left) / 2

  • 边界更新要加 1 / 减 1不要写成left = midright = mid,这会导致死循环。因为如果arr[mid]不是目标值,这个位置就可以排除,所以要直接跳到mid + 1mid - 1

  • 循环条件是left <= right如果写成left < right,会漏掉最后一个可能的元素。比如当leftright相等时,mid就是这个元素,不判断就会错过

总结(基础版)

应对大多数情况下一下步骤完全可以直接套用:

  • 初始化边界:左指针left=0,右指针right=数组长度-1
  • 循环查找:当left <= right时(有查找空间),计算中间索引mid = left + (right-left)/2(避免整数溢出,替代(left+right)/2);
  • 比较缩范围:
    • arr[mid] == target:找到目标,返回mid
    • arr[mid] < target:目标在右半区,left = mid + 1
    • arr[mid] > target:目标在左半区,right = mid - 1
  • 未找到:循环结束无返回,返回-1表示目标不存在。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 22:05:48

AR虚拟形象赋能软件测试开发者IP:2026元宇宙营销战略

元宇宙时代测试开发者的IP机遇 在2026年元宇宙爆发式增长背景下&#xff0c;软件测试从业者面临全新机遇&#xff1a;通过AR虚拟形象构建个人IP&#xff0c;不仅能提升专业影响力&#xff0c;还能在虚拟世界中实现商业变现。元宇宙用户规模已突破15亿&#xff0c;其中开发者社…

作者头像 李华
网站建设 2026/3/10 3:35:40

‌日本大雪灾害模拟:第三方API超时韧性测试实战

当极端天气成为压力测试的天然实验室‌2026年1月&#xff0c;日本北海道与本州岛遭遇“数十年一遇”强降雪&#xff0c;札幌24小时积雪达64厘米&#xff0c;刷新25年纪录。新千岁机场取消航班超140架次&#xff0c;7000旅客滞留&#xff1b;JR北海道单日停运列车超1400列&#…

作者头像 李华
网站建设 2026/3/25 9:00:49

写作小白救星 AI论文网站 千笔 VS 万方智搜AI,本科生首选!

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具已逐渐成为高校学生完成毕业论文的重要帮手。越来越多的学生开始借助这些工具来提升写作效率、降低论文撰写难度。然而&#xff0c;在众多AI写作平台中&#xff0c;如何选择一款真正适合自己的工具&#xff0c;成为了许多…

作者头像 李华
网站建设 2026/3/27 0:40:49

Vue3+java基于springboot框架的船舶物料供应商交易平台的设计与实现

目录船舶物料供应商交易平台的设计与实现摘要开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;船舶物料供应商交易平台的设计与实现摘要 该平台基于Vue3前端框架和Java后端技术&#xff08;Spring Boot框架&#xff09;构建&…

作者头像 李华