O(1), O(n), O(logn), O(nlogn) 的区别

转载原文:《O(1), O(n), O(logn), O(nlogn) 的区别》作者:_大帅_

在描述算法复杂度时,经常用到O(1), O(n), O(logn), O(nlogn)来表示对应复杂度程度, 不过目前大家默认也通过这几个方式表示空间复杂度 。

类型 意义 举例
O(1) 最低复杂度,常量值。也就是无论输入数据增大多少倍,耗时/耗空间都不变。 哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)。
O(n) 数据量增大几倍,耗时也增大几倍。 遍历算法
O(n2) 对n个数排序,需要扫描n×n次 冒泡排序
O(logn) 当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍。 二分查找,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。
O(nlogn) 就是n乘以logn,当数据增大256倍时,耗时增大256*8=2048倍。这个复杂度高于线性低于平方。 归并排序

 

 

留下评论