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

    一、基本概念

    时间复杂性的阶: logn,n,nlogn,n2,n3,2n,n!

    • 多项式时间:上述前5项算法的时间复杂性与输入规模n的一个确定的幂同阶,可以用输入规模的一个多项式来表达;
    • 指数时间:上述最后2项算法(指数次幂,阶乘)为指数时间;

    不同级数的复杂度

    算数级数:与末项平方同阶

    T(n) = 1+2+…+n = n(n+1)/2 = O(n2)

    幂方级数:比幂次高出一阶

    T2(n) = 12 + 22 + 32 + … + n2 = n(n+1)(2n+1)/6 = O(n3)

    T3(n) = 13 + 23 + 33 + … + n3 = n2(n+1)2/4 = O(n4)

    T4(n) = 14 + 24 + 34 + … + n4 = n(n+1)(2n+1)(3n2 + 3n -1)/30 = O(n5)

    几何级数(a > 1):与末项同阶

    Ta(n) = a0 + a1 + … + an = (an+1 -1)/(a - 1) = O(an)

    1 + 2 + 4 + … + 2n = 2n+1 - 1 = O(2n+1) = O(2n)

    收敛级数

    1/1/2 + 1/2/3 + 1/3/4 + … + 1/(n-1)/n = 1 - 1/n = O(1)

    1 + 1/22 + … + 1/n2 < 1 + 1/22 + … = π2/6 = O(1)

    1/3 + 1/7 + 1/8 + 1/15 + 1/24 + 1/26 + 1/31 + 1/35 + … = 1 = O(1)

    可能未必收敛,但是长度有限

    调和级数 : h(n) = 1 + 1/2 + 1/3 + … + 1/n = O(log(n))

    对数级数 : log(1) + log(2) + log(3) + … + log(n) = log(n!) = O(nlog(n))

    # 调和级数的时间上界是logn,对数级数的上界是nlogn

    最优算法

    运行时间的上界: O

    运行时间的下界

    运行时间的准确界: 定义 c g(n) ≤ f(n) ≤ c g(n),则g(n)为f(n)的准确界;

    最优算法:如果能够证明求解某个A问题的任何算法的运行时间的下界是f(n),那么对以时间上界f(n)来求解A问题的任何算法,都认为是最优的。

    # 当规模n很小时,复杂性阶低的算法,不一定比复杂性阶高的算法更有效

  • 相关阅读:
    0112centos上面l安装卸载mysq
    0111mysql如何选择Join的顺序
    0111MySQL优化的奇技淫巧之STRAIGHT_JOIN
    0108MySQL集群搭建详解(三种结点分离)
    0106主从复制
    0104探究MySQL优化器对索引和JOIN顺序的选择
    MongoDB整理笔记の新增Shard Server
    MongoDB整理笔记の管理Sharding
    MongoDB整理笔记のSharding分片
    MongoDB整理笔记の减少节点
  • 原文地址:https://www.cnblogs.com/eniac1946/p/8706836.html
Copyright © 2011-2022 走看看