Python二分查找:寻找数值与下标相等的元素

陆遥
陆遥
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在单调递增且元素唯一的整数数组中,利用二分查找算法高效定位数值等于其下标的元素。通过判断中间值与下标的关系缩小搜索范围,提供完整的Python代码实现及运行结果分析,帮助开发者掌握该经典算法的应用场景。

本文通过具体实例,详细讲解如何在Python中查找数组内数值与其下标相等的元素。内容包含算法思路、代码实现及结果演示,供广大Python爱好者参考学习。

题目要求如下:

给定一个单调递增的整数数组,其中每个元素均为唯一值。请编写函数,找出数组中任意一个满足“数值等于其下标”条件的元素。例如,在数组[-3, -1, 1, 3, 5]中,数值3与其下标3相等。

采用二分查找策略:若当前中间元素的值小于其下标,由于数组单调递增且元素差值至少为1(即相邻元素差值大于等于-1的逻辑修正,实际应为元素值增长速度快于下标增长或相当,此处依据原文逻辑:若nums[mid] < mid,则左侧元素值更小,不可能等于下标,故搜索右半部分;若nums[mid] > mid,则右侧元素值更大,不可能等于下标,故搜索左半部分)。

算法代码实现如下:

# -*- coding:utf-8 -*-
#! python3
class Solution:
  def numberEqualSubscript(self, numbers):
    if numbers == []:
      return -1
    left = 0
    right = len(numbers) - 1
    while(left <= right):
      middle = (left + right) >> 1
      if numbers[middle] == middle:
        return middle
      elif numbers[middle] < middle:
        left = middle + 1
      else:
        right = middle - 1
    return -1
numbers = [-3,-1,1,3,5]
print(Solution().numberEqualSubscript(numbers))

程序运行输出结果为:

3

如需进一步了解Python相关知识,推荐查阅本站系列教程:《Python数据结构与算法教程》、《Python列表操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》以及《Python入门与进阶经典教程》。

希望本文的内容能对您的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 算法库。