繁体   English   中英

二分搜索没有给出正确的结果

[英]Binary Search doesn't give correct result

我对以下代码有疑问。 我尝试使用二进制搜索在数组中找到给定的 k 元素。 但是 function binSearch 不返回结果。 我在 StackOverflow 中找到了类似的代码并遵循了相同的代码,但这没关系。

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 是更新的排序列表,你正在从这个排序列表中获取元素索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM