二分查找的实现、特性及实战题目解析

119 阅读1分钟

二分查找的前提

  • 目标函数单调, 必须是有序 递增/递减
  • 存在上下界
  • 可以通过索引访问

二分查找-代码模版

# 左右界标
left, right = 0, len(array) - 1 

# 左右的两个界标 向中间夹逼 
while left <= right: 
    mid = (left + right) / 2 
    if array[mid] == target:
        # find the target!!
        break or return result
    
    elif array[mid] < target:
        # 如果目标值 大于中间 那么就将左界标替换成右边的最小值
        left = mid + 1 
    else: 
        # 如果目标值 小于中间 那么就将右界标替换成左边的最大值
        right = mid - 1
        
注意: 如果mid是实数(整数、分数) 分数的情况 直接left = mid 或 right = mid