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

问题描述 投票:0回答:1

我对以下代码有疑问。我尝试通过二进制搜索在数组中找到给定的k元素。但是功能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)
python binary-search
1个回答
0
投票

您的代码工作正常,它给出的是已排序数组元素的索引,而不是原始列表索引。您已经使用了s.sort(),因此我们的列表s已更新为排序列表,并且您将从此排序列表中获取元素索引

© www.soinside.com 2019 - 2024. All rights reserved.