首页 > 其他 > 详细

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

时间:2015-02-14 23:51:43      阅读:1167      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!