python - 二进制搜索功能

标签 python algorithm search binary binary-search

晚上好。我正试图重新开始编程,并决定利用自己的时间进行一些编码练习。我目前正在尝试实现二进制搜索,但我的代码中似乎有一个连续循环。有人可以提示我发生了什么事吗?

def binChop(key, ordered_set):

    found = False
    newSet = ordered_set

    while found != True or newSet > 0:
        midpoint = int(len(newSet)/2)
        if key < newSet[midpoint]:
            found = False
            newSet = newSet[:midpoint]
        elif key > newSet[midpoint]:
            found = False
            newSet = newSet[midpoint:]
        elif key==newSet[midpoint]:
            found = True
    return found

最佳答案

我认为您的问题出在 while 循环的条件中。你有一个“或”而不是“和”——这意味着即使你找到你的结果,也会满足 newSet>0 条件。

关于python - 二进制搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168114/

相关文章:

javascript - 单击带有 selenium 的 javascript 链接

c# - 时隙分配算法

c++ - 搜索数据文件 : coding in python vs c++

计算搜索次数

c# - 在另一个字符串中查找特定字符串,但不会得到类似的结果

python - os.path.exists 与 os.path.isdir 之间的优缺点

python - 如何找到 Python 3.8.7 解释器?

python - 如何从列表中排除某些数字

algorithm - 编写一个方法来对两个不同字符串的字符进行排序,而不是对这些字符串的数组进行排序?

algorithm - 找到一个点,使得到一组点 P 中任意点的最大距离最小化