时间复杂度&空间复杂度
这种复杂度的计算主要是来度量算法的效率。
主要度量两种复杂度:
- 时间复杂度,需要计算多少次
- 空间复杂度,需要占用多少空间
时间复杂度
时间复杂度主要考虑的是计算的次数,而不是实际时间,因为计算机性能不一样需要用的时间也是不一样的。
时间复杂度,用来事前预估算法时间开销和问题规模n的关系。这里的n就是指平时我们数据的量或者是输入的参数等。例如循环n次。
时间复杂度其实包括三种:
- 最好时间复杂度,就是考虑最好的情况
- 平均时间复杂度,考虑所有输入数据都等概率出现的情况
- 最坏时间复杂度,
计算的时候忽略低阶的次数
对于计算机来说二次方在三次方前面不足为道。并且前面的系数也是不足为道的。
复杂度的大小比较
顺序:常对幂指阶
空间复杂度
空间复杂度表示程序运行时对内存的需求程度。
两个因素会影响内存占用程度:
- 变量和内存增加有关
- 函数调用也会带来内存增加
变量带来内存增加
如果生成新的变量则会带来内存怎讲,如果变量数量不增加则空间复杂度是O(1).
对于一维数组来说,他是O(n),因为数组越长内存占用越多。
对于二维数组来说是n平方。
因为是相对于输入变量来说的。比如:
函数调用带来内存开销
因为调用函数的时候会存储局部变量,所以会占用内存。
引用
- 王道考研-数据结构