一.多项式时间
时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。时间复杂度一般分为两种级别:一种是 O(1) , O(log(n)) , O(na) 等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;另一种是 O(an) 和 O(n!) 型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。
时间复杂度 | 复杂度类别 |
---|---|
O(n) | 多项式级的复杂度 |
O(log(n)) | 多项式级的复杂度 |
O(na) | 多项式级的复杂度 |
O(an) | 指数级复杂度 |
O(n!) | 阶乘级复杂度 |