下文中一切的等号并不意味着完全相等,而是二者量级相同,不会影响证明的结果。
T(n)=2T(2n)+O(n)。
不难发现
T(n)=n×1+2n×2+4n×4+…+nn×n=n×(1+1+…+1)=nlogn
T(n)=2T(2n)+O(n2)。
不难发现
T(n)=n×1+2n×4+4n×16+…+nn×n2=n×(1+2+4+…n)=n×(2n−1)=n2
T(n)=2T(2n)+O(nlogn)。
不难发现
T(n)=n×1log1+2n×2log2+4n×4log4+…+nn×nlogn=n×(log1+log2+log4+…+logn)=n×(0+1+2+…+logn)=n×2log2n=nlog2n
我们知道
i=0∑nik=O(nk+1)
于是推广上面结论得到
T(n)=2T(2n)+O(nlogkn)⇒T(n)=O(nlogk+1n)