【数据结构与算法】复杂度分析

  • 什么是复杂度分析
  • 为什么需要复杂度分析
  • 如何复杂度分析—大O
  • 常见算法复杂度
  • 常见复杂度大小关系
  • 空间复杂度
  • 参考

  • 想要学习数据结构与算法,首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。
  • 这个概念究竟有多重要呢?可以这么说,它几乎占了数据结构和算法这门课的半壁江山,是数据结构和算法学习的精髓。
  • 数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。
  • 所以,如果你只掌握了数据结构和算法的特点、用法,但是没有学会复杂度分析,那就相当于只知道操作口诀,而没掌握心法。只有把心法了然于胸,才能做到无招胜有招!

什么是复杂度分析

数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量算法的执行效率呢?时间、空间复杂度分析。

复杂的数据分析趋势图选择题_复杂的数据分析趋势图选择题

为什么需要复杂度分析

使用具体的测试用例来测量算法的复杂度的缺点:

  1. 无法确保计算机系统的状态在运行算法时是完全相同的
  2. 必须将算法具体的实现出来后才能去具体的测试它,但有的时候我们是想先将我们的思路先做个大致的分析,确保这个思路下的算法是可行的、符合一定要求的之后,才去具体的实现它。

如何复杂度分析—大O

复杂的数据分析趋势图选择题_数据结构_02

复杂的数据分析趋势图选择题_数据结构_03

复杂的数据分析趋势图选择题_数据结构_04

常见算法复杂度

复杂的数据分析趋势图选择题_数据结构_05

复杂的数据分析趋势图选择题_算法_06

复杂的数据分析趋势图选择题_复杂度分析_07

复杂的数据分析趋势图选择题_复杂度分析_08

复杂的数据分析趋势图选择题_算法_09

复杂的数据分析趋势图选择题_数据结构_10

复杂的数据分析趋势图选择题_复杂的数据分析趋势图选择题_11

复杂的数据分析趋势图选择题_复杂度分析_12

复杂的数据分析趋势图选择题_数据结构_13

常见复杂度大小关系

复杂的数据分析趋势图选择题_复杂的数据分析趋势图选择题_14

空间复杂度

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

复杂的数据分析趋势图选择题_算法_15