Python 求数组局部最大值的实例
时间:2021-06-16 08:22:07|栏目:Python代码|点击: 次
求数组局部最大值
给定一个无重复元素的数组A[0…N-1],求找到一个该数组的局部最大值。规定:在数组边界外的值无穷小。即:A[0]>A[-1],A[N-1] >A[N]。
显然,遍历一遍可以找到全局最大值,而全局最大值显然是局部最大值。
可否有更快的办法?
算法描述
使用索引left、right分别指向数组首尾。
求中点 mid = ( left + right ) / 2
A[mid]>A[mid+1],丢弃后半段:right=mid
A[mid+1]>A[mid],丢弃前半段:left=mid+1
递归直至left==right
时间复杂度为O(logN)。
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
上一篇:手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
栏 目:Python代码
本文标题:Python 求数组局部最大值的实例
本文地址:http://www.codeinn.net/misctech/142809.html






