计算递归算法的时间复杂度



如何计算递归算法的时间复杂度?

如t (n) = (3 n/2) + 0(1)(堆排序)

使用主定理

无论如何,你的方程看起来坏了,因为递归调用的输入值比调用者的输入值高,所以你的复杂度是O(无穷大)

大师定理是捷径。但是,既然你要学习所有递归函数的复杂度,我宁愿建议你学习递归树的工作原理,它构成了大师定理的基础。这个链接继续详细解释它。与其盲目地使用大师定理,不如学习一下,以便将来更好地理解它!这个关于递归树的链接也是一个很好的阅读

通常你可以猜出答案,然后用归纳法证明。

但是有一个定理可以解决堆排序的很多情况,称为主定理:

http://en.wikipedia.org/wiki/Master_theorem

堆排序复杂度

最新更新