通常衡量算法的性能有 2 个标准,分别为时间复杂度和空间复杂度。其中,时间复杂度衡量的是执行当前算法所消耗的时间,空间复杂度衡量的则是执行当前算法所需占用的内存空间大小。
1. 时间复杂度
1.1 线性阶
如果数组长度为,而你的算法需要查询次才能得出结果,那么该算法的时间复杂度为。
回想一下之前提到的数组的反转,如果采用收尾交换的方式,那它的时间复杂度为
1.2 常数阶
无论数组长度有多长,你所设计的算法只需要查询 1 次就可以得出结果,那么该算法的时间复杂度为,比如 Hash 表。
1.3 指数阶
1.4 对数阶
1.5 高级排序
2. 空间复杂度
如果数据的长度越长,则需要更大的空间,比较常用的有、、:
- :如果算法执行所需的临时空间不会随着数组长度变化而变化,即该算法的空间复杂度为一个常数
- :如果每当数组长度增加 1,就需要一个额外的内存空间