二分查找和三分求单峰函数极值
二分查找
对于一个单调递增的数列,我们可以从头到尾遍历一遍求出所求值的位置,这样的时间复杂度毫无疑问的o(n)的,我们可以对其二分求出所需要的值。二分的写法有很多,根据问题的不同会有不同的写法。所有我们在这里只讲思路。假设这个区间是单调递增的,对于区间[l,r]我们可以找出中间点mid=(r+l)>>1,对中间的值和所需要的值进行比较,如果mid的值大于所求值,r=mid-1。反之,l=mid+1。重复此步,直到找出答案。
单峰函数
如果这个函数拥有唯一的极大值点(极小值点),且在极大值(极小值)的左侧单调递增(递减),极大值(极小值)的右侧单调递减(递增)。我们可以称这种函数是单峰函数。我们也可以称后一种函数是单谷函数。
三分求单峰函数的级值
单峰函数设为f,我们在区间上任取两点r,l。
如果f®<f(l),l和r要么同时处于极大值的右侧,要么位于极大值的两侧。无论是那一种情况极大值点一定在r的左侧。我们可令右侧边界取r。
同理,如果f(l)<f®,我们可令左侧边界取l。
定义域的缩小和l和r的取值有关。时间复杂度是log级别的。
二分查找和三分求单峰函数极值相关推荐
- 二分检索用途及复杂性_二分查找和三分查找哪个快?算法复杂度与常数无关?复杂度分析的常见误区...
还记得两三年前,我初看一本算法书,看到二分查找算法的复杂度时,我发现了了不得的东西:二分查找每次查询范围减少一半,需要查询的次数是 ,它的复杂度是 . 我把它改成三分查找,每次查询两个数字与我的目标数 ...
- C++二分查找示例(求货物装载量)
C++二分查找,我们了解了二分查找的算法以及它的算法复杂度,效率还是不错的. 通过一个示例来说明下,传送带一次送来n个货物重量为w,使用k辆卡车来装载,求出装载全部货物所需的最大运载量P的最小值. # ...
- 三分/优选法(黄金分割法)求单峰函数极值
给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减.试求出x的值. (此题其实当然可以取导用二分做,但是如果有些函数求导很麻烦的话那就用三分) 三分: 此题 ...
- hihoCoder #1142 : 三分求极值
#1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...
- CSP认证201703-4 地铁修建[C++题解]:连通路径上的最大边权最小、bfs求边权为1的最短路、二分查找
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 题目给定n个点和m条边,要求最多选择n条边,使得1到n连通,然后每段路同时开工,求最小工时.换句话说,求的是连通路上最大边权最小. ...
- 挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel
首先提供帮助类 可能这个类还需要更新 .求最大值.求最小值.选择排序.二分查找找出下标.二分查找排好序列里面是否有那个值 public class Util {//求最大值public static ...
- 算法--二分查找--求平方根(循环法/递归法)
二分查找: 数据需要是顺序表(数组) 数据必须有序 可以一次排序,多次查找:如果数据频繁插入,删除操作,就必须保证每次操作后有序,或者查找前继续排序,这样成本高,二分查找不合适 数据太小,不用二分查找 ...
- 语言非递归求解树的高度_算法素颜(11):无死角“盘”它!二分查找树
引言 <菜鸟也能"种"好二叉树!>一文中提到了:为了方便查找,需要进行分层分类整理.而满足这种目标的数据结构之一就是树. 树的叶子节点可以看作是最终要搜寻的目标物:叶子 ...
- 二分查找求上界和下界
二分查找求上界和下界 假设序列有序,其区间为[left,right)[left, right),设middlemiddle为区间中间值,现在需要获得首个出现元素vv的位置,如果不存在,返回一个位置,在 ...
- 二分查找算法应用-实现求平方根函数
使用二分查找算法,尽可能的逼近求解平方根.算法的思路很简单:设置三个标识:left=0,right=x(x为输进去的被开方数) mid=(left+right)/2,然后用mid*mid-x的绝对值去 ...
最新文章
- linux设备:初始化
- 使用IDEA整合spring4+spring mvc+hibernate
- OpenCV之highgui 模块. 高层GUI和媒体I/O: 为程序界面添加滑动条 OpenCV的视频输入和相似度测量 用OpenCV创建视频
- 摄像头poe供电原理_弱电知识之六:跟我学做监控,认识POE交换机与POE监控摄像头...
- 十年前的网易,新浪,维基百科,百度百科在手机上的打开效果
- Oracle Internal Event:10200 Consistent Read诊断事件
- Mac 设置 NDK
- html盒子模型子元素怎么水平占满父元素_前端面试常考问题之css盒模型
- 拼多多成为2021年春晚独家红包互动合作伙伴
- vscode 字体太小的问题,安装新字体
- 六子棋 java_六子棋——人工智能系统的设计与研究_Java
- 一文带小白玩转NFC、门禁卡
- 第2章_7 判断某整数是正整数、负整数还是零 (10 分)
- 磁盘管逻辑卷(LVM)
- @TableField fill
- c# 扫描局域网IP列表的几种方法
- 自门控激活函数Swish
- 动态规划(八):子序列系列
- PHP开发手机自动拨号软件
- 基于java(springboot框架)在线视频点播系统 毕业论文(1)前端