MIT6.006 课程笔记P1 - 思考如何进行 PeakFinding

寻找峰值 peak

给出一个数组 a b c d e f g h i
并给予数字 index 1 2 3 4 5 6 7 8 9
那么如果某个数字是 peak ,那么他将 大于等于左边的数大于等于右边的数
或者 a >= b 这里的 a 也是峰值

暴力算法

简单的暴力算法思路即:从左往右遍历
复杂度显然为:O(n)
那么看看能否改进一下暴力算法?

分而治之

Use a divide and conquer strategy, and recursively break;
判断 a[n/2] 和 a[n/2-1]a[n/2] 和 a[n/2+1] 进行二分答案搜索
这就使得复杂度降为:请添加图片描述
在同样情况下,运行暴力算法需要13秒,使用分而治之策略只花0.001秒
详细的算法实现可以参考:CSDN 作者链接

从1D到2D

一维的问题解决了,那么思考如果问题来到二维呢?
此时的 peek 会定义为 a>=b, a>=c, a>=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值