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 相关文章推荐
python不带重复的全排列代码
Aug 13 Python
python 队列详解及实例代码
Oct 18 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
python实现手机通讯录搜索功能
Feb 22 Python
python 实现倒排索引的方法
Dec 25 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
Python运行DLL文件的方法
Jan 17 Python
Python sorted对list和dict排序
Jun 09 Python
django rest framework 过滤时间操作
Jul 12 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
python内置进制转换函数的操作
Jun 02 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
PHP输出时间差函数代码
2013/01/28 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
医药代表个人的求职信分享
2013/12/08 职场文书
黄河象教学反思
2014/02/10 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
60句有关成长的名言
2019/09/04 职场文书
使用Python解决图表与画布的间距问题
2022/04/11 Python