二分搜索
二分搜索类型
"""
情况一:二分存在性搜索 - 在whlie循环中返回答案
寻找target
循环:用l<=r 为条件开始搜索,这样如果中点m每次没有找到,
就可以直接避开m缩小返回。
判断:如果中点符合条件,直接返回。
如果不在[l,r]左区间则缩小至右区间搜索l=m+1
否则r=m-1在左区间搜索
退出:如果l和r完美错过,那么没找到
"""
l, r = 0, len(nums)-1
while l<=r:
m = (+r)>>1
if nums[m]==n: # 找到了
return m
if {...}: # 判断:如果不在[l, m]闭区间
l = m+1
else:
r = m-1
return -1 # 没找到情况一:存在性查找例题
情况二:最值查找例题
情况三:边界搜索
bisect库函数
Last updated