二进制搜索中的无限循环

拉米亚

我正在尝试使用以下功能实现二进制搜索:

def buggy_binary_search(input, key):
    low = 0
    high = len(input)-1
    mid = (low + high)/2
    while low <= high:
        if input[mid] == key:
            return mid
        if input[mid] > key:
            high = mid - 1
        else:
            low = mid
    return -1

上面的函数在运行时会陷入无限循环。我该如何纠正?

Pratik Singhal

因为,您没有更新midwhile循环的值,所以将继续检查同一元素并进入无限循环,以纠正许多人指出的那样,请mid在while循环中更新
另外,您应该这样做low = mid+1,而不应该这样做low = mid

完整的代码如下:

    def binary_search(input, key):
       low = 0
       high = len(input)-1
       mid = (low + high)/2
       while low <= high:
          mid = (low + high)/2
          if input[mid] == key:
             return mid
          if input[mid] > key:
             high = mid - 1
          else:
             low = mid + 1
       return -1

确保输入已排序!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制搜索变体中的无限循环(Java)

来自分类Dev

二进制搜索基本。陷入无限循环

来自分类Dev

C ++中的二进制搜索函数返回无限循环

来自分类Dev

二进制搜索循环

来自分类Dev

在某些情况下,我的二进制搜索进入无限循环

来自分类Dev

在c中的二进制搜索

来自分类Dev

数组中的二进制搜索

来自分类Dev

Java中的二进制搜索

来自分类Dev

在计数二进制间隙时无限循环

来自分类Dev

Javascript二进制动画无限循环

来自分类Dev

在计数二进制间隙时无限循环

来自分类Dev

试图找到数组中3个项目的二进制文件。陷入无限循环

来自分类Dev

如何使用for循环来计算二进制搜索中执行的搜索次数?

来自分类Dev

C:两种不同的二进制搜索实现,一种陷入无限循环

来自分类Dev

C:两种不同的二进制搜索实现,一种陷入无限循环

来自分类Dev

在c上进行二进制搜索,而while循环

来自分类Dev

二进制搜索树预遍历,递归与循环?

来自分类Dev

二进制搜索树预遍历,递归与循环?

来自分类Dev

二进制搜索树-在Python中搜索Fcn

来自分类Dev

在二进制搜索树中搜索Word对象

来自分类Dev

找不到时退出循环-Python中的二进制搜索

来自分类Dev

从Java中的二进制搜索树中删除

来自分类Dev

删除二进制搜索树python中的节点

来自分类Dev

二进制搜索树中Java方法的成本

来自分类Dev

更新二进制搜索树中的数据

来自分类Dev

计算二进制搜索功能中的比较

来自分类Dev

试图在Haskell中实现二进制搜索

来自分类Dev

在C中快速二进制搜索/索引

来自分类Dev

Python中的二进制搜索树的深度