Python最简实现二分查找元素是否在队列中

以前使用bisect这个模块的时候,大多是用于维护一个有序队列。没想到过用它实现二分法。

今天做题的时候需要做二分法,写的有点繁琐,不管是递归还是循环。我就想,python那么多模块,难道就没有现成的?

 

然后突然感觉bisect这个模块难道不就是可以来用吗?想了几分钟,感觉肯定是可以的,可是就是没想明白怎么弄(可能是最近两个礼拜home office在家里呆傻了)。干脆搜了一下,果然。

http://kuanghy.github.io/2016/06/14/python-bisect

 

代码非常简单。

def binary_search_bisect(lst, x):
    i = bisect_left(lst, x)
    if i != len(lst) and lst[i] == x:
        return i
    return None

 

这个可爱的朋友已经帮我们弄好了,他甚至帮我们测试了循环递归和bisect的比较。甚至有numpy.searchsorted的比较。

 

基本上除非你使用的是numpy的ndarray,使用bisect的版本是最简单+最快捷的。

posted on 2020-03-31 04:41  Symbiosis  阅读(443)  评论(0编辑  收藏  举报

导航