python - 通过字符串进行二分查找

标签 python binary-search

我对 python(3.3) 比较陌生,我只是想通过单词列表进行二分搜索,并且在循环索引时无法弄清楚如何修复我的操作数类型。 ..我继续收到类型错误。无法找出解决办法

def find(L, target):
    start = 0
    end = len(L) - 1

    while start <= end: 
        middle = (start + end)// 2 
        midpoint = L[middle]
        if midpoint > target:
            end = midpoint - 1
        elif midpoint < target:
            start = midpoint + 1
        else:
            return midpoint

我这样调用该函数:

L = [“布莱恩”、“梅格”、“彼得”、“乔”、“斯图伊”、“路易斯”]

查找(L,“乔”)

最佳答案

你的逻辑看起来不错,除了输入递增和递减中点而不是中间的错误。

def find(L, target):
    start = 0
    end = len(L) - 1

    while start <= end:
        middle = (start + end)/ 2
        midpoint = L[middle]
        if midpoint > target:
            end = middle - 1
        elif midpoint < target:
            start = middle + 1
        else:
            return midpoint

L = ["Brian", "Joe", "Lois", "Meg", "Peter", "Stewie"] # Needs to be sorted.

print find(L, "Peter")

关于python - 通过字符串进行二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327244/

相关文章:

java - Java中排序(内存映射?)文件中的二进制搜索

javascript - JS 数组二分查找中的递归与无递归

java - 编译器错误? Java二分查找

python - 如何将软件或其他包添加到 docker 容器中?

python - 为嵌套字典获取 2 个具有最高值的键

python - SVN:Python 预提交脚本总是失败

Python Pandas 如果列 id 值更大

python - 通过霍夫变换检测框

algorithm - 何时使用 low < high 或 low + 1 < high for loop invariant

php - in_array() 是否使用二进制搜索算法?