Python二分查找代码运行异常,目标元素存在时总返回None是什么问题
二分查找代码问题排查
存在的问题
- 核心比较逻辑写反:当
guess < key时,说明目标值在mid右侧区间,应该修改下界low = mid + 1,你的代码错误修改了上界high = mid -1,直接跳过了目标值所在的区间;对应guess > key时才应该修改上界high = mid -1。 - 代码中的
<是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
相关产品推荐
相关产品推荐

