大O表示法(Order)
O(f(n))表示的是算法的时间复杂度,表示规模为n的问题需要的时间与f(n)成正比,即f(n)阶。其中函数 f(n) 称为增率函数(growth-rate function)。
比如:
- 若规模为n的问题需要的时间与n成正比,则问题表示为O(n),即n阶
- 若需要的时间与(n^2)成正比,则问题表示为O((n^2)),以此类推。
注意:
- 大O表示法指出的是最糟糕的情况下的运行时间,表示算法的上限。比如O(n)在查找的时候可能第1次就找到了
- 算法的速度,是随着输入的增加,其运行时间将以什么样的速度增加。
常用的5种大O运行时间
- O(log n) :也叫对数时间,比如二分查找
- O(n) :也叫线性时间,比如简单查找
- O(nlog n) :比如快速查找
- O((n^2)) :比如选择排序
- O(n!) :也比如旅行商问题