简单算法的时间复杂度

Suppose T(n) is the runtime of resolving a problem with n elements, T(n) = Θ(1) if n = 1; T(n) = 2T(n/2) + Θ(n) if > 1; so T(n) is Θ(n log n).
假设T(n)是解决一个有n个元素的问题的时间复杂度,T(n)=Θ(1) ,如果n =1; T(n) = 2T(n/2) + Θ(n) if > 1;else, n > 1; so T(n) is Θ(n log n).
http://blog.csdn.net/RizeJin/article/details/5916833有介绍
和Merge-sort类似
令O(n) --> f(n) 设n = 2^k

T(n) = T(2^k) = 2T(2^k-1) + f(2^k)

= 2(2(T(2^k-2) + f(2^k-1)) + f(2^k)
= 22T(2^k-2) + 2f(2^k-1) + f(2^k)
= …
= 2^kT(1) + 2^(k-1)f(2) + 2^(k-2)f(2
2) + … 20f(2k)
设g(1) = T(1) = O(1) n = 1时
设g(1) = a f(n) = bn a、b为常数
T(n) = T(2^k)
= 2^ka + 2^(k-1)2b + 2(k-2)*22b + …20*2kb
= 2^k
a + kb*2^k
= an + kbn
= an + bnlog2n
= O(nlog2n)
常见算法的时间复杂度:
在这里插入图片描述
假设有递推关系式
,其中 为问题规模, 为递推 的子问题数量, 为每个子问题的规模(假设每个子问题的规模基本一样), 为递推 以外进行的计算工作。
a≥1,b>1为常数,f(n) 为函数,T(n) 为非负整数 。则有以下结果:
(1)若 那么
(2)若 那么
(3)若 且对于某个常数 和所有充分大 的
有 那么

这里是情况2,且a=b,所以有T(n) = O(n logn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值