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

    例1:

    for(int i = 1;i<=n;i*=2)
    {
      for(int j = 1;j<=n;j++)
      p--;
    }

    时间复杂度:O(n*log2n

    内层循环改为 <=i 

    时间复杂度:O(n2)    1+2+3...+n 等差数列前n项和

    例二:

    for(i = 1;i<=n;i++)
      for(j = 1;j<=i;j++)
        for(k = 1;k<=j;k++)
          p--;

    时间复杂度:O(n3)

    计算过程:

      1+(1+2)+(1+2+3)+(1+2+3+...)+...+..(1+2+3+...+n)

      i(i+1)/2 i从1到n 求和 n(n+1)(2n+1)/6 ???

    递归的时间复杂度计算:递归的通式:T(n) = aT(n/b)+f(n)    n为数据规模

    例3:T(n) = 3T(n/4)+cn2

    时间复杂度:O(n2)

    例4:T(n) = 2T(n/2)+1

    时间复杂度:O(n)

    简便算法:直接算O(nlogba )   和  f(n) 将这连个数比较 , 取结果大的一个

    上面两个一样大的时候 结果为    O(nlogba  *  log2n)

    名称       最好时间复杂度     平均时间复杂度     最坏时间复杂度   空间复杂度         稳定性
    冒泡        O(n)正序          O(n^2)          O(n^2)逆序        O(1)           稳定
    简单选择      O(n^2)         O(n^2)          O(n^2)          O(1)            不稳定
    插入排序      O(n)正序         O(n^2)         O(n^2)逆序        O(1)           稳定
    快排        O(n*log2 n)          O(n*log2 n)       O(n^2)有序/逆序最坏    O(log2 n)        不稳定
    希尔(插入)      O(n)正序              O(n的(1.2~1.5))      O(n^2)逆序        O(1)           不稳定
    归并(二路)      O(n*log2 n)                O(n*log2 n)       O(n*log2 n)       O(n)           稳定
    堆排(选择)         O(n*log2 n)               O(n*log2 n)     O(n*log2 n)        O(1)           不稳定
    基数排序      O(d*(n+r))                O(d*(n+r))         O(d*(n+r))       O(n+r)           稳定

    注:

      空间复杂度 额外申请的空间 包括变量和动态申请的
      常量空间复杂度:如果我们额外申请的空间 不随着处理数据量的增大而增大 那么我们称这样的空间复杂度为常量空间复杂度记为O(1)

      稳定:数值相等的两个元素 在排序前后其相对位置未发生改变

      基数排序最稳定 d------位数 r--------桶的个数
      别的排序可能受人的写法影响稳定性
      归并排序 -----空间复杂度 如果申请了额外数组就是O(n) 没申请就是O(log2 n)
      堆排
      建立初始堆------ S = 2^(k-2)*1+2^(k-3)*2+...+1*(k-1) 错位相减 ----------------- O(n)
      排序------------- O(n*log2 n)

  • 相关阅读:
    大话设计模式笔记 装饰模式
    大话设计模式笔记 依赖倒转原则
    大话设计模式笔记 单一职责原则 开放-封闭原则
    Effective Java 英文 第二版 读书笔记 Item 5:Avoid creating unnecessary objects.
    Effective Java 英文 第二版 读书笔记 Item 4:Attempting to enforce noninstantiability by making a class abstract does not work.
    Effective Java 英文 第二版 读书笔记 Item 3:Enforce the singleton property with a private constructor or an enum type.
    Effective Java 英文 第二版 读书笔记 Item 2:Consider a builder when faced with many constructor parameters.
    大话设计模式笔记 策略模式
    大话设计模式笔记 简单工厂模式
    jvm的垃圾回收算法
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/9158904.html
Copyright © 2011-2022 走看看