【算法•日更•第二期】查找算法:三分VS二分
▎前言:函数
如果你已经上过初二的数学课了,那么你十有八九会被函数折磨到吐血,这是一种中考压轴题类的题目,往往分类讨论到你恶心。不过没学过也不打紧,现场讲解一下:
☞『数学中的函数』
一般地,如果在一个变化过程中有两个变量x和y,并且对于变量x的每一个值,变量y都有唯一的值与它对应,那么我们称y是x的函数,x是自变量。(copy自八上数学BS教材)
表示函数的方法:列表法、关系式法和图像法。(copy自八上数学BS教材)
可能有些枯燥,举个例子:小明从家出发,去旅游,速度是2m/s,如果他不歇下来,那么x小时后就会走2x米,如果用y来表示路程,那么就有y=2x,那么y就是x的函数。
表示成图像是这样的:

细细一看便会发现直线上的点y轴的值总是x轴值的2倍,这就是函数的图像。
还有这些:


像这样的函数都是单调函数。
☞『单调函数』
一般的,不强调区间的情况下,所谓的单调函数是指, 对于整个定义域而言,函数具有单调性。而不是针对定义域的子区间而言。举个例子,反比例函数是一个具有单调性的函数,而不是一个单调函数,因为在反比例函数的定义域上,并不呈现整体的单调性。单调函数只是单调性函数中特殊的一种。区间具有单调性的函数并不一定是单调函数,而单调函数的子区间上一定具有单调性。具有单调性函数可以根据区间不同而单调性不同。(copy自百度)
这就是定义了,猜你也看不懂,一句话概括:函数y的值随着自变量x的增大而增大或函数y的值随着自变量x的增大而减小,不能出现随着x增大而yx却先增大后减小之类的情况。
☞『单峰函数』
单峰函数是在所考虑的区间中只有一个严格局部极大值(峰值)的实值函数。如果函数f(x)在区间[a, b]上只有唯一的最大值点C,而在最大值点C的左侧,函数单调增加;在点C的右侧,函数单调减少,则称这个函数为区间[a, b]上的单峰函数。(copy自百度)
单峰函数不太好解释,直接上图吧:

红点处就是这个函数的峰,就像山的峰一样,而下图却有两个峰,不属于单峰函数:

☞『计算机中的函数』
函数是指一段在一起的、可以做某一件事的程序。
学会了数学上的函数,可别忘了计算机函数了。
感觉前言说太多了,赶紧切入正题:
▎算法:二分&单调函数
学过二分查找(不会的话戳这里)的人都知道:二分是一种查找值的算法,但是前提是查找的数是已经排好序的(升序降序无所谓),才能二分查找。
那么用在函数上时呢?很容易就能辨认出只有单调函数才符合已经排好序。
▎算法:三分&单峰函数
☞『三分』
与二分相对比,二分形象一点说是切一刀分成两份,那么三分就是切两刀分成三份,怎么切呢?二分是取中间的(中点),那么三分就是取两个三等分点呗。
当出现单峰函数时由于函数值没有排好序,所以二分只会力不从心,而三分则是这类问题的常用算法。
三分常常用来找单峰函数峰值。
☞『算法思想』
1)取两个三等分点。

2)取中点。

3)比较大小。
若左边的三等分点大于右边的三等分点,则放弃右区间。
否则放弃左区间。
4)反复这样,直到找到峰值。
【算法•日更•第二期】查找算法:三分VS二分的更多相关文章
- 【算法•日更•第二十八期】图论:强连通+Tarjan算法(一)
▎前言 一直都想学习这个东西,以为很难,结果发现也不过如此. 只要会些图论的基础就可以了. ▎强连通 ☞『定义』 既然叫强连通,那么一定具有很强的连通性. 强连通:就是指在一个有向图中,两个顶点可以互 ...
- 【算法•日更•第二十七期】基础python
▎前言 看到这个题目,你一定会很好奇,为什么学打NOIP的要学习python?其实python对我们是很有用的! NOIP虽然不支持使用python提交代码,但是在NOILinux上天生自带pytho ...
- 【算法•日更•第二十三期】数据结构:two-pointer(尺取法)&莫队
▎引入 ☞『例题』 一道十分easy的题: 洛谷P1638 长度为n的序列,m种数 找一个最短区间,使得所有数出现一遍 n≤1e6 ,m≤2e3. ☞『分析』 这道题非常的简单,但是如果不会two-p ...
- 【sky第二期--PID算法】--【智能车论坛】
[sky第二期--PID算法] 想学PID的可以来[智能车论坛]这里有我发布的资料http://bbs.tekbots.eefocus.com/forum.php?mod=viewthread& ...
- 【算法•日更•第十九期】动态规划:RMQ问题
▎前言 首先先来说一下RMB是什么,当然是人民币啦. 今天我们要学的这个东西不一般,叫做RMQ问题,那么它和RMB有什么关系呢?待小编细细说来. ▎前置技能:动态规划 不会的同志请戳这里迅速了解动态规 ...
- 【算法•日更•第五十期】二分图(km算法)
▎前言 戳开这个链接看看,惊不惊喜,意不意外?传送门. 没想到我的博客竟然被别人据为己有了,还没办法投诉. 这年头写个博客太难了~~~ 之前小编写过了二分图的一些基础知识和匈牙利算法,今天来讲一讲km ...
- 【算法•日更•第三十九期】迭代加深搜索:洛谷SP7579 YOKOF - Power Calculus 题解
废话不多说,直接上题: SP7579 YOKOF - Power Calculus 题意翻译 (略过没有营养的题干) 题目大意: 给出正整数n,若只能使用乘法或除法,输出使x经过运算(自己乘或除自己, ...
- 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解
废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms 内存限制: 524288 KB提交数: 130 通过数: 68 [ ...
- 【算法•日更•第三十五期】FF算法优化:EK算法
▎写在前面 FF算法传送门 之前我们已经学过了FF算法(全称Ford-Fulkerson算法)来找最大流,但是这种算法仍有诸多不对的地方. 其实这种算法存在着严重的效率的问题,请看下面的图: 以这个图 ...
随机推荐
- C++语法小记---开篇
几句闲话 由于C++的语法非常的复杂,但是实际使用的过程中,经常使用的语法也就那么一些,还有比较多的语法很少被使用,时间一长就容易忘记,因此“C++语法小记”主要是将C++中不经常使用和容易忘记的语法 ...
- assemble、compile、make、build和rebuild的关系
assemble:打包(之前已经编译了源文件)compile.make.build和rebuild都是编译过程:将源代码转换为可执行代码的过程,Java的编译会将java编译为class文件,将非ja ...
- 前端学习(十七):JavaScript常用对象
进击のpython ***** 前端学习--JavaScript常用对象 JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等 在JavaScript中,对象是拥有属性和方法的数据 ...
- python unicode和string byte
python unicode 和string那 开发过程中总是会碰到string, unicode, ASCII, 中文字符等编码的问题, 每次碰到都要现搜, 很是浪费时间, 于是这次狠下心, 一定要 ...
- MyBatis--动态插入多条数据
MySQL支持的一种插入多行数据的INSERT语句写法是 INSERT INTO 表名 (字段名1,字段名2,字段名3) VALUES (值1,值2,值3,...),(值1,值2,值3,...)... ...
- 第四章 常用API(下)
4.1.String类 描述:该类代表字符串 构造方法: 方法 描述 public String() 初始化构造一个空白字符串 public String(char[] value) 通过字符数组初始 ...
- 将HTML5封装成android应用APK
借鉴了网上很多的教程终于是把整个过程走通了,最主要的还是墙的问题.... 先是要搭建环境(每一步都要检查,确保安装正确): 1.安装 nodejs 淘宝镜像: npm install -g cnpm ...
- shell动态向sql传参
一直在想有什么好方法可以实现,用shell动态给sql传参,自己写了一个简单,有什么好方法,欢迎留言补充,下面代码纯手打,可能有疏忽之处,请大佬批评指正指正. 实现方法如下: 1.新建一个文件02.t ...
- PHP array_intersect_key() 函数
实例 比较两个数组的键名,并返回交集: <?php$a1=array("a"=>"red","b"=>"gree ...
- Python List len()方法
描述 len() 方法返回列表元素个数.高佣联盟 www.cgewang.com 语法 len()方法语法: len(list) 参数 list -- 要计算元素个数的列表. 返回值 返回列表元素个数 ...