美文网首页算法
算法-时间复杂度和空间复杂度

算法-时间复杂度和空间复杂度

作者: 一亩三分甜 | 来源:发表于2020-08-13 19:36 被阅读0次

    Big O notation

    O(1):Constant Complexity 常数复杂度
    O(log n):Logarithmic Complexity 对数复杂度
    O(n):Liner Complexity 线性时间复杂度
    O(n^2):N square Complexity平方
    O(n^3):N cubic Complexity立方
    O(2^n):Exponential Growth指数
    O(n!):Factorial阶乘
    注意:只看最高复杂度的运算

    O(1)

    int n = 1000;
    System.out.println("Hey-your input is:"+n)
    

    O(?)

    int n = 1000;
    System.out.println("Hey-your input is:"+n);
    System.out.println("Hmm.. I'm doing more stuff with:"+n);
    System.out.println("And more:"+n);
    

    O(N)

    for(int i=1;i<=n;i++){
       System.out.println("Hey - I'm busy looking at:"+i);
    }
    

    O(N^2)

    for(int i=1;i<=n;i++){
       for(int j=1;j<=n;j++){
         System.out.println("Hey - I'm busy looking at:"+i+"and"+j);
       }
    }
    

    O(log(n))

    for(int i=1;i<n;i=i*2){
       System.out.println("Hey - I'm busy looking at:"+i);
    }
    

    O(k^n)

    int fib(int n){
      if(n<2) return n;
      return fib(n-1)+fib(n-2);
    }
    

    方法一:从1到n的循环累加

    y = 0;
    for i = 1 to n:
    y += i;
    
    时间复杂度O(n)
    

    方法二:求和公式sum=n(n+1)/2

    y = n*(n+1)/2;

    时间复杂度O(1):这段语句永远只执行一次

    递归条件下分析时间复杂度

    Fib:0,1,1,2,3,5,8,13,21,34, ...
    F(n) = F(n-1) + F(n-2);

    int fib(int n){
       int(n<2) return n;
       return fib(n-1) + fib(n-2);
    }
    时间复杂度O(2^n)
    

    Master Theorem主定理

    解决所有递归函数计怎么计算时间复杂度

    Algorithm Recurrence relationship Run time
    Binary search T(n)=T(n/2) + O(1) O(log^n)
    Binary tree traversal T(n) = 2T(n/2) +O(1) O(n)
    Optimal sorted matrix search 二维排序矩阵二分查找 T(n) = 2T(n/2) +O(log^n) O(n)
    Merge sort 归并排序 T(n) = 2T(n/2)+O(n) O(nlog^n)

    所有排序最优办法是nlog^n。

    二叉树的前序,中序,后序遍历时间复杂度为O(n)。每个节点访问一次且仅访问一次,时间复杂度线性于二叉树的节点总数n。

    图的遍历:时间复杂度是多少?O(n),每个节点访问一次且仅访问一次,节点总数为n。

    搜索算法:DFS、BFS时间复杂度是多少?O(n),所有节点只访问一次,节点总数为n。

    二分查找:时间复杂度是多少?log^n。

    空间复杂度

    1.数组的长度
    2.递归的深度(特殊说明)

    相关文章

      网友评论

        本文标题:算法-时间复杂度和空间复杂度

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