数据结构-复杂度
复杂度:粗略衡量算法好坏的刻度尺(工具)
两个维度: 时间和空间
时间复杂度(重点)
- 快慢
空间复杂度 - 使用空间的情况
时间复杂度:
- 直接利用允许时间衡量不现实,测试环境多变,不好控制变量
前提:如果指定cpu的情况下,单位时间内运行的基本指令是固定的,算法计算的快慢和输入
数据的规模是有关系的
结果:如果一个算法A需要的指令比另一个算法B需要的指令个数小,就可以推出算法A的运行
时间更快
粗略计算算法的快慢
n:数据的规模;
f(n):n的数据规模情况下,需要的大概基本指令个数;
引入大O渐进表示法
O(f(n))
1)保留最高次项
2)保留的最高次数项系数化为1
- 复杂度: 最好 ·| 平均 | 最坏
一般优先考虑最坏情况,再考虑平均情况,最好情况考虑比较少
空间复杂度:
O(F(n)) 在n输入规模的情况下,算法需要的最大的空间情况
1)开辟数组;
2)调用栈;(递归方法)
常见的时间复杂度
O(1) O(log(n)) O(n) O(n*log(n)) O(n^2)
递归方法的时间复杂度画调用栈