Time g(n)复杂度为O(n^2)的算法的时间复杂度

Time g(n)复杂度为O(n^2)的算法的时间复杂度,time,complexity-theory,mergesort,Time,Complexity Theory,Mergesort,我刚刚了解了各种排序方法的时间复杂性。(例如合并排序、快速排序)但是我在这个领域还是个初学者。 我知道如果g(n)的复杂度为O(n),那么这个方法的整个时间复杂度将是n logn。但是如果g(n)的复杂性是O(n^2)? void f(n){ 如果(n0.05),则时间复杂度递推关系为 –其中G(n)是G(n)的时间复杂度。解决此问题的方法,例如O(n^2): 展开(将O(…)拖到末尾): –在m展开后。第二项包含一个几何级数,因此可以将其作为常数忽略。应用停止条件n=1: 例如: –这

我刚刚了解了各种排序方法的时间复杂性。(例如合并排序、快速排序)但是我在这个领域还是个初学者。 我知道如果g(n)的复杂度为O(n),那么这个方法的整个时间复杂度将是n logn。但是如果
g(n)的复杂性是O(n^2)?

void f(n){

如果(n0.05),则时间复杂度递推关系为

–其中
G(n)
G(n)
的时间复杂度。解决此问题的方法,例如
O(n^2)

  • 展开(将
    O(…)
    拖到末尾):

    –在
    m
    展开后。第二项包含一个几何级数,因此可以将其作为常数忽略。应用停止条件
    n=1

  • 例如:

    –这意味着情况3适用。因此结果与(1)一致:


  • 一般公式对所有类型的递归都有效吗?是否有其他公式可以帮助我找到其他方法的时间复杂性。非常感谢您的帮助。@JiaZhengLua主定理公式仅适用于参数除以因子的一个递归项的递归,例如i)
    T(n/2)
    ,但不是例如ii)
    T(n/2)+T(n/3)
    或iii)
    T(n-1)
    。对于ii)等情况,可以使用。
    void f(n) { 
        if (n <= 1) return;
        else { 
          g(n); 
          f(n/2);
          f(n/2);
        }
    }