2、算法运行时间分析:工具与实例

算法运行时间分析工具与实例

算法运行时间分析:工具与实例

1. 引言

算法成功的秘诀如同喜剧成功的秘诀一样,在于时机的把握。在分析函数式算法的运行时间时,我们需要用到三种工具:用于描述函数增长的渐近符号、用于估计运行时间的递归关系,以及摊还运行时间的概念。虽然算法成功的标准应同时考虑时间和空间,但分析函数式算法的空间需求较为复杂,因此我们主要关注时间分析。

2. 渐近符号

渐近符号用于比较函数的增长阶,而无需考虑其中涉及的常数。主要有三种渐近符号:Θ、O 和 Ω(分别读作“大 theta”、“大 omicron”和“大 omega”)。
- Θ 符号 :设 f 和 g 是两个以自然数为参数并返回非负结果的函数。若存在正常数 C、D 和自然数 n0,使得对于所有 n > n0,都有 Cg(n) ≤ f(n) ≤ Dg(n),则称 f 的阶为 g,记作 f = Θ(g)。例如,n(n + 1)/2 = Θ(n²),n³ + n² + n log n = Θ(n³),n(1 + 1/2 + 1/3 + ···) = Θ(n log n)。特别地,Θ(1) 表示一个值介于两个正常数之间的匿名函数,如取列表的头部是一个常数时间操作,可表示为 head 操作需要 Θ(1) 步。
- O 符号 :若存在正常数 C 和自然数 n0,使得对于所有 n > n0,都有 f(n) ≤ Cg(n),则称 f 的阶至多为 g,记作 f = O(g)。例如,在假设测试为常数时间的情况下,takeWhile 在长度为 n 的列表上的运行时间是 O(n) 步。在最坏情况下,运行时间是 Θ(n) 步;在最好情况下,当第一个元素未通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值