如何在 Python 中高效地实现二分查找来检查项目是否存在?

Barbara Streisand
发布: 2024-11-24 07:48:14
原创
217 人浏览过

How Can I Efficiently Implement a Binary Search in Python to Check for Item Existence?

Python中的二分搜索(折半查找)

Python提供了实现二分搜索(也称为折半查找)的库函数,用于在排序列表或元组中查找项。不过,这些函数在项未找到时仍然会返回一个位置。

为了解决这个问题并仅检测项是否存在,一种方法是使用bisect.bisect_left()函数找到插入位置,然后检查该位置处的项是否与目标项相等。然而,这可能很繁琐,还需要在数字大于列表中最大数字时进行边界检查。

考虑到内存消耗,问题中提出了使用字典作为替代方案的建议。然而,这可能需要大约两倍的内存需求。

因此,可以使用自定义代码实现二分搜索来解决此问题:

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
登录后复制

此函数使用bisect_left()函数查找插入位置,该位置指示目标项存在时的位置,或指示其不在时超出范围的位置。通过检查该位置处的项是否与目标项相等,可以确定目标项是否存在。

以上是如何在 Python 中高效地实现二分查找来检查项目是否存在?的详细内容。更多信息请关注PHP中文网其他相关文章!

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