1. 数据结构与算法 —— 复杂度分析

369 阅读1分钟

时间复杂度

时间复杂也叫作「渐进时间复杂度」,使用大 O 来表示代码执行时间随数据规模增长的变化趋势。

常见的时间复杂度有:

常见的时间复杂度

空间复杂度

空间复杂度也叫「渐进空间复杂度」,表示算法的存储空间与数据规模之间的增长关系。

最好、最坏情况时间复杂度、平均时间复杂度

平均时间复杂度的计算方式:

使用概率论中的「加权平均值」,也叫「期望值」来进行表示。其实平均时间复杂度的全称应该叫做「加权平均时间复杂」或者「期望时间复杂度」。

大多数的时候不需要用到平均时间复杂度,只有在同一块代码在不同的情况下,时间复杂度有量级的差距,我们才用这三种复杂度表示法来区分。

均摊时间复杂度

均摊时间复杂的应用的场景更加特殊,只有在下面这种情况时才用这种分析方法。

对一个数据结构进行一组连续操作中,大部分情况下时间复杂的很低,只有个别情况下时间复杂的很高,而这些操作之间存在前后连贯的时序性关系。这个时候,我们就可以将这一组操作放在一起分析,看能否将较高时间复杂度那次操作的耗时,平摊到其他时间复杂度比较低的操作上。而且能够应用「均摊时间复杂度」分析的场景,一般均摊时间复杂度就等于最好情况时间复杂的。