【数据结构与算法】复杂度分析
- 什么是复杂度分析
- 为什么需要复杂度分析
- 如何复杂度分析—大O
- 常见算法复杂度
- 常见复杂度大小关系
- 空间复杂度
- 参考
- 想要学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。
- 这个概念究竟有多重要呢?可以这么说,它几乎占了数据结构和算法这门课的半壁江山,是数据结构和算法学习的精髓。
- 数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。
- 所以,如果你只掌握了数据结构和算法的特点、用法,但是没有学会复杂度分析,那就相当于只知道操作口诀,而没掌握心法。只有把心法了然于胸,才能做到无招胜有招!
什么是复杂度分析
数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量算法的执行效率呢?时间、空间复杂度分析。

为什么需要复杂度分析
使用具体的测试用例来测量算法的复杂度的缺点:
- 无法确保计算机系统的状态在运行算法时是完全相同的
- 必须将算法具体的实现出来后才能去具体的测试它,但有的时候我们是想先将我们的思路先做个大致的分析,确保这个思路下的算法是可行的、符合一定要求的之后,才去具体的实现它。
如何复杂度分析—大O



常见算法复杂度









常见复杂度大小关系

空间复杂度
- 空间复杂度是不太用考量的,因为计算机的空间一般是很富裕的
- 因此很多算法都会空间换时间
- 复杂度分析一般都是分析时间复杂度

















