Python 中的二分搜索(二分)
确定元素是否存在于排序列表或元组中是编程中的常见任务。虽然 Python 提供了用于二分搜索的 bisect 模块,但即使未找到该项目,其 bisect_left 和 bisect_right 函数也会返回一个位置。为了满足这一需求,引入了显式返回布尔值的二分搜索的 Python 实现。
建议的解决方案
binary_search 函数采用排序列表 'a' 、要搜索的元素“x”以及搜索范围的可选开始和结束位置“lo”和“hi”。它使用 bisect 模块中的 bisect_left 函数来定位列表“a”中“x”的插入点“pos”。
如果“pos”小于“hi”且元素位于“pos” ' 等于 'x',则找到 'x',并返回 'pos' 作为其在列表中位置的索引。但是,如果 'pos' 到达列表末尾(即 'pos' 等于 'hi'),则找不到 'x',并且函数返回 -1。
from bisect import bisect_left def binary_search(a, x, lo=0, hi=None): if hi is None: hi = len(a) pos = bisect_left(a, x, lo, hi) # find insertion position return pos if pos != hi and a[pos] == x else -1 # don't walk off the end
用法示例
例如,给定一个排序列表“a”和要搜索的元素“x”, binary_search 函数可以按如下方式使用:
result = binary_search(a, x) if result == -1: print("Element not found") else: print("Element found at index", result)
这个简洁的 Python 函数提供了一种便捷的方法来执行二分搜索以检查排序列表中的元素存在性,同时保持二分搜索的简单性和效率。
以上是这个 Python 二分查找函数能找到该元素吗?的详细内容。更多信息请关注PHP中文网其他相关文章!