【发布时间】:2021-04-04 18:03:03
【问题描述】:
算法细节:
给定一个包含 n 个元素的数组 A,其排序值为 A[0] ≤ A[1] ≤ ... ≤ A[n−1],目标值为 x,以下子例程使用二分查找来查找 x 在 A 中的索引。
这是我写的代码:
def Binarysearch(A, x):
L = 0
R = len(A)-1
M = (L + R)//2
while L<=R:
if A[M] < x:
L = M+1
elif A[M] > x:
R = M-1
else:
return M
return None
问题: 通过编写以下几行,我没有得到任何结果:
list = [2,3,4,5,12,15,76]
Binarysearch(list, 3)
我想了解问题所在。 我注意到,如果我在 else 条件之后替换: return M with print(M) 我得到一个无限序列 1。
【问题讨论】:
-
也许你的意思是使用函数值的返回值并打印出来?
-
您是否熟悉交互式在线工具 - 例如。
http://www.pythontutor.com/- 如果你运行你的代码,更容易看出哪里出错了。 -
旁白:不要命名你的变量
list;当您尝试使用list内置时,它会导致令人困惑的问题。
标签: python function search indexing