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

    Big O notation

    • O(1):常数复杂度
    • O(long n):对数复杂度
    • O(n):线性时间复杂度
    • O(n^2):平方
    • O(n^3):立方
    • O(2^n):指数
    • O(n!):阶乘
      注意:在多个程序合在一起的时候,只看最高复杂度的运算

    例题

    O(1)

    int n=100;
    Console.WriteLine("Input:"+n);
    

    O(N)

    for(int i=1;i<=n;i++){      
          Console.WriteLine("Input:"+i);
    }
    

    O(N^2)

    for(int i=1;i<=n;i++){
          for(int j=1;j<=n;j++){     
                Console.WriteLine("Input:"+i+"and"+j);
          }
    }
    

    O(long(n))

    for(int i=1;i<=n;i=i*2){
                Console.WriteLine("Input:"+i);
    }
    

    O(K^n)

    for(int i=1;i<=Math.Pow(2,n);i++){ 
            Console.WriteLine("Input:"+i);
    }
    

    O(N!)

    for(int i=1;i<=Factorial(n);i++){
           Console.WriteLine("Input:"+i);
    }
    

    1+2+3+...+n

    for i=1 to n:
    y=i+y
    这里需要计算n次
    O(n)
    求和公式:n(n+1)/2
    y=n*(n+1)/2
    无论n是多少,只计算一次
    O(1)

    递归:Fibonacci arry 1,1,2,3,5,8,13,21,34...

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

    def fib(n)
     if n==0or n==1
          return n;
        return fib(n-1)+fib(n-2)
    

    这里可以思考下他的时间复杂度
    O(2^n)
    这里记住背下master theorem

    类目 时间复杂度
    二分查找 O(longn)
    二叉树遍历 O(n)
    排序类查找 O(n)
    排序类 O(nlongn)
  • 相关阅读:
    Unity NGUI 3.0.4版本 制作网络版斗地主
    unity3D与网页的交互---做项目的一点总结
    Cross-platform Tools
    Win7下Qt5的安装及使用
    VS Installer教程
    C++ & MFC
    论文模板的定制
    批处理文件
    MFC六大关键技术
    C/C++常用预处理指令
  • 原文地址:https://www.cnblogs.com/ccaa/p/13021445.html
Copyright © 2011-2022 走看看