我被要求证明归并排序的时间复杂度是但我找不到继续我的方法的方法。有什么帮助吗?
最后和
我不知道如何从这里继续证明它是
我被要求证明归并排序的时间复杂度是但我找不到继续我的方法的方法。有什么帮助吗?
最后和
我不知道如何从这里继续证明它是
您可以自己做代数,也可以应用主定理http://en.wikipedia.org/wiki/Master_theorem
它实际上是 n(log2n),而不是 log2n(比较排序都受限于 nlogn 性能)。
看起来你错过了除以二。从顶部开始(抱歉不知道LaTeX),
T(n) = 2 T(n/2) + n
= 2 [2 T(n/4) + n/2] + n
= 4 T(n/4) + 2n
= 4 [2 T(n/8) + n/4] + 2n
= 8 T(n/8) + 3n
= 2^k T(n/2^k) + kn
根据您对 n/2^k = 1 的观察,我们可以将每一边乘以 2^k,取对数,然后找到 log2 n = k。将它插入我们之前的位置,
T(n) = 2^(log2 n)*T(1) + (log2n)*n
= n*T(1) + (log2n)*n
= n + (log2n)*n
= (log2n)*n