zoukankan      html  css  js  c++  java
  • 时间复杂度计算方法

    1.形如 T(n) = a * T(n/b) + f(n) 的时间复杂度计算方法

    有一种方法叫做主方法(Master method)是用来专门计算这种形式的时间复杂度的,方法具体如下:

     下边举例进行说明:

    例1:

    T(n) = 25*T(n/5) + n^2

    因为:a=25,b=5,d=2,f(n) = n^2

    所以此例符合Master method 中的第二种情况,所以 直接就可以得到:T(n) = n^2 * logn

     2.形如 T(n) = a * T(n-1) + f(n)  的时间复杂度计算方法

    这种形式的复杂度计算,只能用递推的方式

    例1:

    T(n)=T(n-1)+n                             (1)

    T(n-1)=T(n-2)+n-1                       (2)

    T(n-2)=T(n-3)+n-2                       (3)

    T(n-3)=T(n-4)+n-3                       (4)

    ……

    T(3)=T(2)+3                                 (n-2)

    T(2)=T(1)+2                                 (n-1)

    T(1)=T(0)+1                                 (n)

    将(n)式带回(n-1) 式,将(n-1)式带回(n-2) 式,将式子依次带回,最后带回(4) 式,(3) 式,(2) 式,(1) 式。带入式子结果如下:

    T(n)=T(0)+1+2+3+……+n-3+n-2+n-1+n

    计算结果如下:

    T(n)=1+1+2+3+……+n-3+n-2+n-1+n

    T(n)=1+(1+n)*n/2

    故算法的时间复杂度为

    O(n2)

     

  • 相关阅读:
    【Leetcode】23. Merge k Sorted Lists
    【Leetcode】109. Convert Sorted List to Binary Search Tree
    【Leetcode】142.Linked List Cycle II
    【Leetcode】143. Reorder List
    【Leetcode】147. Insertion Sort List
    【Leetcode】86. Partition List
    jenkins 配置安全邮件
    python 发送安全邮件
    phpstorm 同步远程服务器代码
    phpUnit 断言
  • 原文地址:https://www.cnblogs.com/qiang-wei/p/12080196.html
Copyright © 2011-2022 走看看