- 算法的速度指的并非时间,而是操作数的增速。
- 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
- 算法的运行时间用大O表示法表示
- O(log n)比O(n)快,当需要搜索的元素越多时,前者比后者快得越多
其中x轴代表n值,y轴代表T(n)值(时间复杂度)。T(n)值随着n的值的变化而变化,其中可以看出O(n!)和O(2ⁿ)随着n值的增大,它们的T(n)值上升幅度非常大,而O(logn)、O(n)、O(nlogn)随着n值的增大,T(n)值上升幅度则很小。
常用的时间复杂度按照耗费的时间从小到大依次是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2ⁿ)<O(n!)
O(1)称为常量级,算法的时间复杂度是一个常数。
O(n)称为线性级,时间复杂度是数据量n的线性函数。
O(n²)称为平方级,与数据量n的二次多项式函数属于同一数量级。
O(n³)称为立方级,是n的三次多项式函数。
O(logn)称为对数级,是n的对数函数。
O(nlogn)称为介于线性级和平方级之间的一种数量级
O(2ⁿ)称为指数级,与数据量n的指数函数是一个数量级。
O(n!)称为阶乘级,与数据量n的阶乘是一个数量级。