二分查找搜索算法

二分查找

高效的搜索算法,它适用于已排序的数组。其基本原理是通过反复将查找区间缩小一半来定位目标元素的位置。以下是它的优缺点:

优点:

效率高:对于大型数据集,二分查找的时间复杂度是O(log n),比线性查找(O(n))更快。

空间效率:由于不需要额外存储除目标数组之外的数据,空间开销较小。

稳定性:对于有序数组,二分查找不会改变原有顺序。

缺点:

前提条件:数据必须是有序的,如果数组无序,则无法使用二分查找。

不适合动态插入或删除:因为每次查找都需要更新分割点,插入和删除操作会变得复杂。

实现原理:

初始化两个指针,指向数组首尾。

计算中间索引,比较中间值与目标值。

如果目标值等于中间值,返回中间索引;若小于中间值,继续在左半部分查找;若大于,继续在右半部分查找。

递归地重复步骤2和3,直到找到目标值或者区间为空。

实际应用:

二分查找广泛应用于搜索引擎、数据库查询、路径查找等需要快速定位特定元素的场景。

c 复制代码
Python实现示例:

Python
def binary_search(arr, target):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
            
    return -1  # 如果找不到,返回-1表示未在数组中

# 示例
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
    print(f"元素 {target} 的位置是:{result}")
else:
    print(f"{target} 不在数组中")
相关推荐
毕设源码-钟学长10 分钟前
【开题答辩全过程】以 基于Python的车辆管理系统为例,包含答辩的问题和答案
开发语言·python
CCPC不拿奖不改名30 分钟前
数据处理与分析:数据可视化的面试习题
开发语言·python·信息可视化·面试·职场和发展
液态不合群33 分钟前
线程池和高并发
开发语言·python
旦莫1 小时前
Pytest教程:Pytest与主流测试框架对比
人工智能·python·pytest
数据大魔方1 小时前
【期货量化实战】螺纹钢量化交易指南:品种特性与策略实战(TqSdk完整方案)
python·算法·github·程序员创富·期货程序化·期货量化·交易策略实战
旻璿gg1 小时前
paddleocr、paddleocrvl、ppocrv5
python
清水白石0081 小时前
手写超速 CSV 解析器:利用 multiprocessing 与 mmap 实现 10 倍 Pandas 加速
python·pandas
Corleo2 小时前
记录一次复杂的 ONNX 到 TensorRT 动态 Shape 转换排错过程
python·ai
shughui2 小时前
Python基础面试题:语言定位+数据类型+核心操作+算法实战(含代码实例)
开发语言·python·算法
No0d1es2 小时前
2025年12月电子学会青少年软件编程Python六级等级考试真题试卷
开发语言·python·青少年编程·等级考试·电子学会