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) 

     

  • 相关阅读:
    redis学习--Hashes数据类型
    redis学习--String数据类型。
    redis学习一
    redis命令大全
    MongoDB学习笔记(索引)
    ECharts的使用(经典博客)
    php中五种常见的设计模式
    实用的借口
    php中socket的使用
    jquery仿凡客诚品图片切换的效果实例代码
  • 原文地址:https://www.cnblogs.com/GumpYan/p/5827668.html
Copyright © 2011-2022 走看看