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操作CouchDB数据库简单示例
Mar 10 Python
win10系统中安装scrapy-1.1
Jul 03 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
如何通过python画loss曲线的方法
Jun 26 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
numpy求平均值的维度设定的例子
Aug 24 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
python实现最速下降法
Mar 24 Python
如何通过Python3和ssl实现加密通信功能
May 09 Python
如何在Win10系统使用Python3连接Hive
Oct 15 Python
python 多进程和协程配合使用写入数据
Oct 30 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
PHP的宝库目录--PEAR
2006/10/09 PHP
php网页后退不再出现过期
2007/03/08 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
vue v-model的用法解析
2020/10/19 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
python实现excel读写数据
2021/03/02 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
陈欧的广告词
2014/03/18 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
赡养老人协议书范本
2015/08/06 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书