二进制搜索没有给出正确的结果
Binary Search doesn't give correct result
我对以下代码有疑问。我尝试使用二进制搜索在数组中找到给定的 k 元素。但是函数 binSearch 没有 return 结果。我在 Whosebug 中找到了类似的代码并遵循了相同的代码,但没关系。
def binSearch(s, k, l, r):
m = (l+r)//2
if l <= r:
if k > s[m]:
return binSearch(s,k,m+1,r)
elif k < s[m]:
return binSearch(s,k,l,m)
elif s[m] == k:
return m
else:
return -1
s = [34, 23, 12, 45, 3, 2, 76, 1, 4, 3, 6, 7]
l = 0
r = len(s)
k = 12
s.sort()
binSearch(s, k, l, r)
您的代码运行良好,它给出的是已排序数组元素的索引,而不是原始列表索引。你已经使用了 s.sort() 所以你的 list s 是更新的排序列表,你正在从这个排序列表中获取元素索引
我对以下代码有疑问。我尝试使用二进制搜索在数组中找到给定的 k 元素。但是函数 binSearch 没有 return 结果。我在 Whosebug 中找到了类似的代码并遵循了相同的代码,但没关系。
def binSearch(s, k, l, r):
m = (l+r)//2
if l <= r:
if k > s[m]:
return binSearch(s,k,m+1,r)
elif k < s[m]:
return binSearch(s,k,l,m)
elif s[m] == k:
return m
else:
return -1
s = [34, 23, 12, 45, 3, 2, 76, 1, 4, 3, 6, 7]
l = 0
r = len(s)
k = 12
s.sort()
binSearch(s, k, l, r)
您的代码运行良好,它给出的是已排序数组元素的索引,而不是原始列表索引。你已经使用了 s.sort() 所以你的 list s 是更新的排序列表,你正在从这个排序列表中获取元素索引