You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python二分查找代码运行异常,目标元素存在时总返回None是什么问题

二分查找代码问题排查

存在的问题

  • 核心比较逻辑写反:当guess < key时,说明目标值在mid右侧区间,应该修改下界low = mid + 1,你的代码错误修改了上界high = mid -1,直接跳过了目标值所在的区间;对应guess > key时才应该修改上界high = mid -1。
  • 代码中的&lt;是HTML转义字符,实际运行需要替换为普通小于号<。
  • 函数外定义的全局变量guess=1没有实际作用,函数内部的guess变量已经覆盖了全局变量,可以直接删除。

修正后代码

def binary_search(n, key):
    low = 0
    high = len(n) - 1
    
    while low <= high:
        mid = (low + high) // 2
        guess = n[mid]
        if guess == key:
            return mid
        elif guess < key:
            # 目标值在右侧,调整下界
            low = mid + 1
        elif guess > key:
            # 目标值在左侧,调整上界
            high = mid - 1
    return None

n = [1, 3, 5, 7, 9]
print(binary_search(n, 3)) # 输出结果为1,符合预期

内容的提问来源于stack exchange,提问作者user16986234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:15:01