python - 二分查找元素的最低索引

标签 python binary-search

我想实现一个二分搜索函数,它返回要搜索的元素的最低索引。这是我的代码:

def binarySearch(arr,x):
    n=len(arr)
    if n==1:
        if arr[0]==x:
            return 0
        else:
            return -1 # not in list
    else:
        m=int(n/2)
        if x <= arr[m]:
            return binarySearch(arr[:m],x)
        else:
            return m+binarySearch(arr[m+1:],x)

但是,这不能正常工作。有人可以帮助我吗?

最佳答案

def binarySearch(arr,x):

    if len(arr) == 0:
        return 0

    else:
        m=int(len(arr)/2)

        if arr[m] == x:
            c = 1

            while arr[m-c] == x:
                c += 1
            return m-c+1

        else:
            if x < arr[m]:
                return binarySearch(arr[:m],x)
            else:
                return binarySearch(arr[m+1:],x)

这可以解决您的问题,同时也为您提供最低的索引

关于python - 二分查找元素的最低索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573929/

相关文章:

python - OWSLib 和 python3

r - 如何加入具有多列和多个值的 data.table

c - 递归二分查找/C

c++ - 为什么找到 2 个不同大小的排序数组的中位数需要 O(log(min(n,m)))

python - 如何从文件加载多个正则表达式模式并匹配给定的字符串?

python - 提交多部分/表单数据表单时应用引擎中的编码问题

python - 网格中的 Gtk 滚动窗口大小

python - 有没有巧妙的方法将 key 传递给 defaultdict 的 default_factory?

c# - 我如何在 c# 中的特定字段值的结构数组上进行二进制搜索?