Python提供用于在已排序列表中执行二分搜索的函数吗?类似于C++标准库中的std::lower_bound和std::upper_bound算法?请注意,您只需要将结果返回为中文即可。
这些函数位于 bisect 模块中:
bisect.bisect_left(a, x, lo=0, hi=len(a))
是std::lower_bound()
的类比函数。
bisect.bisect_right(a, x, lo=0, hi=len(a))
是std::upper_bound()
的类比函数。
注意:还有一个名为 bisect() 的函数,其是 bisect_right() 的别名。
Python中还有一个sortedcontainers
包,它也有bisect_left
和bisect_right
函数。https://grantjenks.com/docs/sortedcontainers/sortedlist.html
如果您不想自己维护列表的排序(例如插入),这可能会很方便。