我刚刚了解了各种排序方法的时间复杂性。 (例如,合并排序,快速排序)但是我仍然是该领域的初学者。
我知道如果g(n)的复杂度为O(n),则此方法的整个时间复杂度将为n logn。但是如果g(n) is O(n^2)?
void f(n) {
if (n <= 1) return;
else {
g(n);
f(n/2);
f(n/2);
}
}
答案 0 :(得分:0)
时间复杂度递归关系是
–其中G(n)
是g(n)
的时间复杂度。解决此问题的方法,例如O(n^2)
:
扩展(将O(...)
放到最后):
–展开m
之后。第二项包含converges to 2的几何级数,因此可以将其作为常量忽略。应用停止条件n = 1
:
Master Theorem。例如:
–表示情况3适用。因此,结果与(1)一致: