python - 二进制搜索代码不断给出超出范围错误
问题描述
对于二进制搜索,我一直遇到一个错误,即我的代码中的索引:“mid”,一直超出范围。有没有什么办法解决这一问题?代码:
def binary_search(num, key):
low = 0
high = len(num)
while high >= low:
mid = (low + high)//2
if num[mid] < key:
low = mid + 1
elif num[mid] > key:
low = mid + 1
else:
return mid
return -1
A = [2, 4, 7, 10, 11, 32, 45, 87, 90]
print(binary_search(A, 10))
解决方案
你的条件搞砸了
def binary_search(num, key):
low = 0
high = len(num)
while high >= low:
mid = (low + high)//2
if num[mid] < key:
low = mid + 1
elif num[mid] > key:
high = mid - 1
else:
return mid
return -1
A = [2, 4, 7, 10, 11, 32, 45, 87, 90]
print(binary_search(A, 10))
*在 elif 内
推荐阅读
- view - 奥利奥 - 视图布局管理已更改?
- python - 分析添加导入路径的影响
- css - 如何使用引导程序在模态标题中的文本旁边添加按钮
- .net - 如何在没有 Oracle 帐户的情况下为 .Net 下载 Oracle.DataAccess
- javascript - 使用支持触控的 HTML 画布
- c - 如何检测 xlib 应用程序是否从 xinit 运行?
- python - 在 __init__() 中声明的变量没有 self
- python - 如何在 Python 中逐列附加一组已知形状的数组?
- php - 从字符串构建mysql查询时向列名添加反引号
- java - TestNG - 跳过在注释中使用组的测试