刚刚发现自己以前认为的递归算法复杂度分析都是错的……
主定理:(以下摘自算导)
另a≥1和b>1是常数,f(n)是一个函数,T(n)是定义在非负整数上的递归式:
T(n)=aT(n/b)+f(n)
其中n/b 被解释为⌊n/b⌋或⌈n/b⌉。(对以下结果无影响)
那么:
1.若对于某个常数k>0,有T(n)=O(nlogba−k),则T(n)=O(nlogba)。
2.若f(n)=O(nlogba),则T(n)=O(nlogbalog2n)。
3.若对于某个常数k>0,有T(n)=O(nlogba+k),且存在常数c<1对于足够大的n都有af(n/b)≤cf(n),则T(n)=O(f(n))。