复杂度

作者: 芒果奶油卷 | 来源:发表于2020-02-04 11:36 被阅读0次

    算法复杂度

    在RAM模型中,算法的运行时间与算法需要执行的指令操作次数成正比,记为T(n)

    BigO:存在常数c和函数f(n),使得当n>=c时,T(n)<=f(n),表示为T(n)=O(f(n))

    常数项可忽略,低次项可忽略

    主定理:

    令a>=1和b>1是常数,f(n)是一个函数,T(n)是定义在非负数整数上的递归式:

    T(n)=aT(n/b)+f(n)

    其中将n/b解释为n/b的向上取整或者向下取整,那么T(n)有如下渐近界:

    1.若对某个常数c>0有f(n)=O(n^{\log_b(a-c) }),则T(n)=O(n^{\log_b a })

    2.若f(n)=O(n^{\log_b a }),则T(n)=O(n^{\log_b a \log_g n}),g随意

    3.若对某个常数c>0,有f(n)=\Omega (n^{\log_b (a+b) }),且对某个常数c<1和所有足够大的n有af(n/b) 小于 cf(n),则T(n) = O(f(n)).

    例如.快排:T(n)=2T(n/2)+O(n),对比主定理T(n)=aT(n/b)+f(n),

    则a=2,b=2,f(n)=O(n),符合第二条,则平均复杂度O(nlogn),最坏为O(n^2 )

    O(1):常数阶;O(logn):对数阶;指数阶:O(2^n )

    O(1)>O(logn)>O(n)>O(nlogn)>O(n^2)>O(2^n)>O(n!)

    相关文章

      网友评论

          本文标题:复杂度

          本文链接:https://www.haomeiwen.com/subject/uspugctx.html