码迷,mamicode.com
首页 > 其他好文 > 详细

T(n) = T(n/2) + O(n)

时间:2015-02-14 23:54:31      阅读:862      评论:0      收藏:0      [点我收藏+]

标签:复杂度

先通过一个简单的例子,T(n) = T(n/2) + O(n),
那么T(n)应该的等于多少呢?
1. 给个直观的例子:
自从看到 An apple a day, keep doctors away, 这句谚语,每天我都会吃苹果。
但我吃苹果的方式很特殊,先吃半个,再吃剩下的半个的一半,再吃剩下的半个的一半。。。。
结论: 我永远都吃不完这一个苹果。
其实这个例子就给出了T(n)的上界是O(n):
每次我吃掉的一半就是O(n),剩下T(n/2),上界就是我最初的一个苹果也就是O(n)
2. 数学推导
T(n)<= n + n/2 + n/4 +…+1 = 2n – 2 = O(n)
3. 主定理(参考算法导论)
技术分享
直接得到复杂度应该是 O(n)
大家可以适当的地熟悉下主定理,对于快速判别复杂度非常有好处。
而且对算法设计也会有一定的启发意义。

T(n) = T(n/2) + O(n)

标签:复杂度

原文地址:http://blog.csdn.net/shoulinjun/article/details/43822559

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!