解析时间和空间复杂度

239 阅读1分钟

1、定义说明

时间复杂度和空间复杂度是用来评价算法效率高低的2个标准

时间复杂度:就是说执行算法需要消耗的时间长短,越快越好。比如你在电脑上打开计算器,如果一个普通的运算要消耗1分钟时间,那谁还会用它呢,还不如自己口算呢。 
空间复杂度:就是说执行当前算法需要消耗的存储空间大小,也是越少越好。本来计算机的存储资源就是有限的,如果你的算法总是需要耗费很大的存储空间,这样也会给机器带来很大的负担。 

2、时间复杂度的计算

我们一般用“大O符号表示法”来表示时间复杂度:T(n) = O(f(n))

n是影响复杂度变化的因子,f(n)是复杂度具体的算法。

常见的时间复杂度量级 

  • 常数阶O(1)
  • 线性阶O(n)
  • 对数阶O(logN)
  • 线性对数阶O(nlogN)
  • 平方阶O(n²)
  • 立方阶O(n³)
  • K次方阶O(n^k)
  • 指数阶(2^n)

常数阶O(1)

int a = 1;
int b = 2;
int c = 3;

线性阶O(n)

for (int i = 0; i < n; i++){
    j = i;
    j++;
}