首页 > 后端开发 > Python教程 > 这个 Python 二分查找函数能找到该元素吗?

这个 Python 二分查找函数能找到该元素吗?

Mary-Kate Olsen
发布: 2024-11-28 16:44:11
原创
293 人浏览过

Does This Python Binary Search Function Find the Element?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板