Python 求数组局部最大值的实例


Posted in Python onNovember 26, 2019

求数组局部最大值

给定一个无重复元素的数组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

以上这篇Python 求数组局部最大值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
tornado 多进程模式解析
Jan 15 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
Python对象属性自动更新操作示例
Jun 15 Python
python修改字典键(key)的方法
Aug 05 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
python3将变量输入的简单实例
Aug 19 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
python单向链表实例详解
May 25 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 Python
Python 实现取多维数组第n维的前几位
Nov 26 #Python
python获取array中指定元素的示例
Nov 26 #Python
Flask之pipenv虚拟环境的实现
Nov 26 #Python
Python 根据数据模板创建shapefile的实现
Nov 26 #Python
Python实现直播推流效果
Nov 26 #Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 #Python
创建Shapefile文件并写入数据的例子
Nov 26 #Python
You might like
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
Jquery 扩展方法
2010/05/06 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
判断输入是否为空,获得输入类型的JS代码
2013/10/30 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
jQuery实现雪花飘落效果
2020/08/02 jQuery
Python中的作用域规则详解
2015/01/30 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
python Celery定时任务的示例
2018/03/13 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
python 解决函数返回return的问题
2020/12/05 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
人力资源管理专业学生自我评价
2013/11/20 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
争做文明公民倡议书
2014/08/29 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP