【发布时间】:2022-01-03 18:09:39
【问题描述】:
我是算法的新手。我最近开始研究二进制搜索并尝试自己实现它。任务很简单:我们有一个整数数组a 和一个整数x。如果a 包含x,则结果应该是它的索引,否则函数应该返回-1。
这是我写的代码:
def binary_search(a, x):
l = 0
r = len(a)
while r - l > 0:
m = (l + r) // 2
if a[m] < x:
l = m
else:
r = m
if a[l] == x:
return l
return -1
但是这段代码在a = [1, 2] 和x = 2 上陷入无限循环。我想,我的循环条件不正确(可能应该是r - l >= 0),但这个解决方案没有帮助。我哪里错了?
【问题讨论】:
-
看情况r = 0和l = 0
-
如果
a[m]==x,您不会考虑循环中的大小写 -
if a[m] < x: m = l+1还要确保l < len(a)在末尾。
标签: python algorithm binary-search