Python二分查找算法原理与实战代码解析

拾光
拾光
发布时间:2026-10-15| 5人浏览过
原创

本文深入解析Python中二分查找算法的核心原理,重点阐述其O(log2n)的时间复杂度优势及仅适用于有序列表的局限性。通过三个典型的LeetCode编程题目,详细展示了升序数组搜索、递减数组查找及两数之和问题的二分法代码实现,帮助开发者掌握该算法在实际场景中的应用。

二分查找算法原理与适用场景

二分查找算法的核心优势在于:随着待搜索元素数量的增加,其速度优势相比简单查找愈发显著。然而,该算法存在明显的局限性,即它仅适用于已经排序的列表。由于二分查找依赖于数据的有序性,这导致在列表中进行插入或删除操作变得非常困难。因此,折半查找方法最适合应用于那些数据相对固定、不经常发生变动的有序列表场景。

二分查找的关键特征在于它无需遍历数列中的所有元素,而是通过不断缩小搜索范围来定位目标。每次查找后,待查数据量大致减半,这种对数级的增长模式使得二分查找的时间复杂度稳定为 O(log2n)。虽然最佳情况下只需一次比较即可找到目标,但在最坏和一般场景下,其效率仍远优于顺序查找。

二分查找经典题目实战

题目一:给定一个包含 n 个元素的升序整型数组 nums 以及一个目标值 target,编写一个函数在 nums 中搜索 target。若目标值存在,则返回其下标;若不存在,则返回 -1。


class Solution:
    def search(self,nums:List[int],target:int)->int:
        left=0
        right=len(nums)-1
        while(left<=right):
            mid=(left+right)//2
            if nums[mid]==target:
               return mid
            if nums[mid]<target:
                left=mid+1
            else:
                right=mid-1
        return -1

题目二:在一个严格递减的数组中,寻找第二个比目标值 target 大的数的下标。如果找不到满足条件的数,则返回 -1。


class Solution:
    def search(self,nums:List[int],target:int)->int:
        left=0
        right=len(nums)-1
        while(left<=right):
            mid=(left+right)//2
            if nums[mid]==target:
               return mid
            if nums[mid]>target:
                left=mid+1
            else:
                right=mid-1
        return -1

题目三:函数需以长度为 2 的整数数组形式返回这两个数的下标值。注意 numbers 的下标从 1 开始计数,因此返回的答案数组必须满足 1 <= answer[0] < answer[1] <= numbers.length 的条件。每个输入仅对应唯一的答案,且不可重复使用相同的元素。


class Solution:
     def twoSum(self, numbers: List[int], target: int) -> List[int]:
        for i in range(len(numbers)-1):
            left=i
            right=len(numbers) - 1
            while(left<=right):
                mid=(left+right)//2
                if numbers[mid]+numbers[i]==target:
                    return [i+1,mid+1]
                elif numbers[mid]+numbers[i]<target:
                    left=mid+1
                else:
                    right = mid-1
            return [-1,-1]

总结

总结

至此,关于 Python 二分法查找的详细介绍已告一段落。如需了解更多相关内容,欢迎查阅本站过往文章或继续浏览后续教程,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。