python - 二分查找

a = [1,3,5,7,9]
# 查找第一个大于等于x的位置
def lower_bound(l, r, x):
    while l <= r:
        mid = (l+r) // 2
        if a[mid] < x:
            l = mid + 1
        else:
            r = mid - 1
    return l

# 查找第一个大于x的位置
def upper_bound(l, r, x):
    while l <= r:
        mid = (l+r) // 2
        if a[mid] <= x:
            l = mid + 1
        else:
            r = mid - 1
    return l

print(lower_bound(0, 4, 5))  # 2
print(upper_bound(0, 4, 5))  # 3
posted @   wstong  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示