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)

     

  • 相关阅读:
    分享jQuery的常用技巧12招
    浅析淘宝数据魔方技术架构
    JavaScript的跨域共享的方法
    PHP实现QQ达人信息抓取
    Dreamweaver CS5.5试用小感和破解方法附下载地址
    ExtJS 4应用架构设计
    webkit webApp 开发技术要点总结
    用delphi编写ISAPI过滤器
    1020卡免费共享测试!
    一些有用的網站
  • 原文地址:https://www.cnblogs.com/qiang-wei/p/12080196.html
Copyright © 2011-2022 走看看