时间复杂度和空间复杂度

Posted ccaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间复杂度和空间复杂度相关的知识,希望对你有一定的参考价值。

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)










以上是关于时间复杂度和空间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的时间复杂度是多少?

以下代码片段的算法复杂度

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

7种基本排序算法的Java实现

排序02-直接插入排序法

基于时间复杂度的这些片段真的很困惑