常见算法的时间与空间复杂度

常见算法的时间与空间复杂度

~~~总结一些概念便于随时查看

1.什么是时间复杂度(渐进时间复杂度)?

  简单来说,时间复杂度即是一个算法运行花费的时间。

2.如何求?

  问题规模为n的一个算法内基本语句执行次数记为T(n),此时另一个函数f(n),当n趋近于无穷大时T(n)/f(n)为一个不等于零的常数,则该算法的时间复杂度记为O(f(n));

  f(n)越小,时间复杂度越低,算法效率越高。

  

1 for(i=1; i<=n; ++i)
2 {
3     for(j=1; j<=n; ++j)
4     {
5         c[i][j] = 0;//该步骤属于基本操作执行次数:n的平方次
6         for(k=1; k<=n; ++k)
7             c[i][j] += a[i][k] * b[k][j];//该步骤属于基本操作执行次数:n的三次方次
8     }
9 }

  此处引用百科代码,T(n)=n3+n2,令f(n)=n3,此时T(n)/f(n)满足条件,则该代码的时间复杂度为O(n3)。

3.什么是空间复杂度(渐进空间复杂度)?

  空间复杂度描述算法运行过程中临时占用的存储空间。

  算法在计算机上的存储空间包括:

  1)算法本身代码的存储空间;

  2)算法的数据(输入输出的数据)的存储空间;

  3)算法在运行过程中临时占用的存储空间;

4)如何求?

  一般简单算法的空间复杂度为O(1),一般的递归算法为O(n),具体的分析需要根据算法中分配存储空间代码所处的位置(此处仅考虑代码本身的存储空间)。

原文地址:https://www.cnblogs.com/lfz1211/p/9647226.html