Python 实现数组局部最大值查找算法

沿途有光
沿途有光
发布时间:2026-10-13 | 3人浏览过
原创

本文介绍如何在 Python 中高效查找无重复元素数组的局部最大值。通过二分查找策略,将时间复杂度优化至 O(logN),相比遍历法更具效率。文章包含算法原理、Python 代码实现及运行结果分析,适合需要处理大规模数据场景的开发者参考。

数组局部最大值查找

数组局部最大值查找

假设存在一个不含重复元素的数组 A[0…N-1],目标是找出其中的一个局部最大值。根据定义,数组边界之外的值视为负无穷大,即满足 A[0] > A[-1] 且 A[N-1] > A[N] 的条件。

直观上,遍历整个数组可以找到全局最大值,而全局最大值必然也是局部最大值。

是否存在比遍历更快的解决方案?

算法描述

算法描述

定义两个指针 left 和 right,分别指向数组的起始位置和结束位置。

计算中间索引 mid,公式为 mid = (left + right) / 2。

若 A[mid] > A[mid+1],说明局部最大值位于左半部分(含 mid),此时更新 right = mid。

若 A[mid+1] > A[mid],说明局部最大值位于右半部分(不含 mid),此时更新 left = mid + 1。

重复上述步骤,直到 left 等于 right,此时即为找到的局部最大值索引。

该算法的时间复杂度为 O(logN)。

Python 代码实现

Python 代码实现


def local_maximum(li):
  if li is None:
    return
  left = 0
  right = len(li) - 1
  while left < right:
    mid = int((left + right) / 2)
    if li[mid] > li[mid + 1]:
      right = mid
    else:
      left = mid + 1
  return li[left]


if __name__ == '__main__':
  li = [1, 5, 2, 3, 4, 0]
  result = local_maximum(li)
  print(result)

运行输出结果为:4

以上就是 Python 查找数组局部最大值的完整实现。希望本文内容能为您提供帮助,欢迎收藏并支持本站获取更多技术分享。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表