当前位置: 首页 > news >正文

Python实现二分查找算法详解

文章目录

      • 什么是二分查找?
      • 算法原理
      • 时间复杂度
      • 代码实现
        • 迭代版本(推荐)
        • 递归版本
      • 关键注意事项
      • 测试用例
      • 常见问题解答
      • 总结

什么是二分查找?

二分查找(Binary Search)是一种在有序数组中高效查找特定元素的算法。它的核心思想是将目标值与数组中间元素比较,根据比较结果缩小搜索范围到左半部分或右半部分,重复此过程直到找到目标或范围为空。

算法原理

  1. 确定搜索范围:初始化左右边界为数组的首尾索引
  2. 计算中间位置:取左右边界的中间位置 mid = (left + right) // 2
  3. 比较中间元素
    • arr[mid] == target:找到目标,返回索引
    • arr[mid] < target:目标在右半部分,调整左边界
    • arr[mid] > target:目标在左半部分,调整右边界
  4. 重复步骤2-3:直到找到目标或搜索范围无效

时间复杂度

  • O(log n):每次迭代将搜索范围减半
  • 优于线性查找(O(n)),特别适合大型数据集

代码实现

迭代版本(推荐)
def binary_search_iterative(arr, target):left, right = 0, len(arr) - 1while left <= right:mid = left + (right - left) // 2  # 避免整数溢出if arr[mid] == target<
http://www.dtcms.com/a/269747.html

相关文章:

  • 经典论文 Science子刊:数据驱动的偏微分方程发现 —— Supplementary Materials
  • 找了两个月,没找到工作
  • 【笔记】开源 AI Agent 项目 V1 版本 [新版] 部署 日志
  • 开源 python 应用 开发(四)python文件和系统综合应用
  • go go go 出发咯 - go web开发入门系列(一) helloworld
  • uniapp使用 renderjs 多平台谷歌地图(Google Map)的适配
  • 力扣-31.下一个排列
  • React Native安卓刘海屏适配终极方案:仅需修改 AndroidManifest.xml!
  • 【openGLES】安卓端EGL的使用
  • Javafx教程(1)——初始Javafx
  • 工业HMI的智能化转型:边缘计算与预测性维护的深度融合
  • 自定义RecyclerView的ItemDecoration,用于处理网格布局间距装饰器(支持边缘间距独立控制)
  • ubuntu vscode 点击变量链接进去后 怎么返回原来的位置
  • LocalStorage和SessionStorage的区别和应用
  • 马尔可夫决策过程
  • python办公自动化----使用pandas和os合并多个订单表
  • 【python】 `parse_time_to_seconds` 在功能及健壮性上有以下主要区别
  • ​扣子Coze飞书多维表插件添加数据记录
  • 【UE5】虚幻引擎小百科
  • std::function
  • coze平台AI Agent开发入门之工作流的基本使用方法
  • Redis 缓存机制 及问题场景 及解决方案
  • 接口自动化工具-SoapUI
  • kotlin
  • Ubuntu22.04下微星B850M主板 无wifi模块
  • AR 双缝干涉实验亮相:创新科技实验范式,开拓 AR 技术新局​
  • 传输层协议TCP、UDP
  • SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:整体布局、架构调整(二)
  • 基于FPGA的累加算法实现
  • 2. 两数相加