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

    1.下面函数的复杂度是:

    long foo(long x){
        if(x<2) return 1;
            return x*x*foo(x-1);
    }
    

    解析:

    当n>=2时
    foo(n)=n^2*foo(n-1)=n^2*(n-1)^2*foo(n-2)=...=n^2*(n-1)^2*...*2*foo(1);
    递归n-1步,时间复杂度为O(n)。
     
    2.对于移动平均算法,是计算某变量之前n个数值的算术平均,正确的说法是:A

      A.空间复杂度是O(1)

      B.空间复杂度是O(n)

      C.空间复杂度是O(logn)

      D.空间复杂度是O(nlogn)

    解释:

      注意算的是空间复杂度

      任何一个算法不同情况下可能有多种解法,一般我们以时间复杂度为评判的话,就会用牺牲空间换时间。
      这个算法最明显的有两种解法,
      1.每次进来一个变量n,就遍历前面n个数,然后求和,再取平均,这样的话时间复杂度为O(n),空间为O(1);
      2.以空间换时间:从前往后没计算一次保留一次求和值到一个辅助空间,这样计算下一个的时候直接取得前一个和值加上当前数,再取平均得到当前平均,这样的话时间复杂度为O(1),空间为O(n) 

     

  • 相关阅读:
    POJ 3041 Asteroids 二分图匹配
    ZOJ 3705 Applications 模拟
    UNIX环境高级编程(第3版)
    明清美文四卷本(共四册)
    卑鄙的圣人:曹操(全10册)
    爱丽丝梦游仙境
    我在大清官场30年
    乌合之众:大众心理研究
    Java多线程编程实战指南
    Linux就该这么学
  • 原文地址:https://www.cnblogs.com/GumpYan/p/5827668.html
Copyright © 2011-2022 走看看