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中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
Python随机生成带特殊字符的密码
Mar 02 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
python实现拓扑排序的基本教程
Mar 11 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
Django框架用户注销功能实现方法分析
May 28 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
flask框架自定义url转换器操作详解
Jan 25 Python
Python @property及getter setter原理详解
Mar 31 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基础学习笔记
2007/03/18 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
传智播客学习之java 反射
2009/11/22 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
Python的多态性实例分析
2015/07/07 Python
Python中的变量和作用域详解
2016/07/13 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
小学美术兴趣小组活动总结
2014/07/07 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书