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基础教程之正则表达式基本语法以及re模块
Mar 25 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
老生常谈Python进阶之装饰器
May 11 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python3.6.x中内置函数总结及讲解
Feb 22 Python
python实现websocket的客户端压力测试
Jun 25 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
Python小白不正确的使用类变量实例
May 29 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
详解Django中 render() 函数的使用方法
Apr 22 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加密解密函数(动态加密)
2013/06/19 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
jquery ajax执行后台方法
2010/03/18 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
今天是星期几的4种JS代码写法
2013/09/17 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
Python遍历目录的4种方法实例介绍
2015/04/13 Python
python中的常量和变量代码详解
2018/07/25 Python
在Django中实现添加user到group并查看
2019/11/18 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
关于安全的演讲稿
2014/05/09 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
2015年党建工作总结
2015/03/30 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
追悼会答谢词范文
2015/09/29 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript