大O记法
用于表示某个算法的性能级别。
大O记法默认是 最坏情况 。
O(1)
表示无论面对多大的数据量,其步数都是固定值。
O(N)
表示操作N个数据量的步骤是N。所以数据越多,步骤越多。O(N)
也被称为 线性时间 。
O(log N)
表示二分查找的时间复杂度,介于 O(1)
和 O(N)
之间,称为 对数时间 。
简单的讲,O(log N)
算法的步骤等于二分数据直至元素剩余1个的次数。
所以当数据量翻倍的时候,二分法也只多了一步,这就是为什么用 log
表示。
O(1)
的效率比 O(N)
的效率高,因为当数据量超过两者相等的临界点,直到无穷大,后者比前者花更多的步数,总体而言,后者效率低。