通常衡量算法的性能有 2 个标准,分别为时间复杂度空间复杂度。其中,时间复杂度衡量的是执行当前算法所消耗的时间,空间复杂度衡量的则是执行当前算法所需占用的内存空间大小。

1. 时间复杂度

1.1 线性阶

如果数组长度为💊时间和空间复杂度 - 图1,而你的算法需要查询💊时间和空间复杂度 - 图2次才能得出结果,那么该算法的时间复杂度为💊时间和空间复杂度 - 图3

回想一下之前提到的数组的反转,如果采用收尾交换的方式,那它的时间复杂度为💊时间和空间复杂度 - 图4

1.2 常数阶

无论数组长度有多长,你所设计的算法只需要查询 1 次就可以得出结果,那么该算法的时间复杂度为💊时间和空间复杂度 - 图5,比如 Hash 表。

1.3 指数阶

之前介绍过的冒泡排序算法,它的时间复杂度为💊时间和空间复杂度 - 图6

1.4 对数阶

二分查找法的时间复杂度为💊时间和空间复杂度 - 图7

1.5 高级排序

待补充

2. 空间复杂度

如果数据的长度越长,则需要更大的空间,比较常用的有💊时间和空间复杂度 - 图8💊时间和空间复杂度 - 图9💊时间和空间复杂度 - 图10

  • 💊时间和空间复杂度 - 图11:如果算法执行所需的临时空间不会随着数组长度变化而变化,即该算法的空间复杂度为一个常数
  • 💊时间和空间复杂度 - 图12:如果每当数组长度增加 1,就需要一个额外的内存空间