二分查找

二分查找 → 字典查词(便于记忆)

二分查找仅适用于‌顺序存储结构(如数组)的有序数据‌

·‌条件‌: 数据必须有序,升序或者降序都可以,允许相邻元素值相等(如翻字典时根据首字母快速定位)‌

核心特性:

1.‌时间复杂度‌:O(log n),显著优于线性查找(O(n))
2.‌静态数据更优‌:适合不频繁变动但需高频查找的有序数据集
3.空间限制‌:数据量过大可能导致连续内存不足(数组特性限制)

代码Python版:

def binary_search(arr,target):
    left = 0                         #左指针
    right = len(arr)-1               #右指针

    while left <= right:            #主体循环,循环前提:左指针要小于右指针

        mid = (left+right)//2       #找到中间指针位置

        if arr[mid] == target:      #如果中间指针正好为目标,则中间指针就为目标索引(条件1)

            return mid
        elif arr[mid] < target:     #目标值在中指针右侧情况                    (条件2)
            left = mid + 1
        else:                       #在左侧情况,即arr[mid] > target          (条件3)
            right = mid - 1
    return -1                       #三种情况都不满足则为查找失败,返回-1
#测试用例
数列必须有序必须有序!,如果为无序数列先试用sorted方法排序!!!
test_array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
print(binary_search(test_array, 10))

视频学习地址:点击此处

posted @ 2025-07-09 14:26  胡啊花瓜  阅读(11)  评论(0)    收藏  举报