时间复杂度
定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,记作T(n)=O(f(n)),它表示随着问题规模n的增大,算法时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度。f(n)是问题规模n的某个函数。
在计算渐近时间复杂度时,可以只考虑对算法运行时间贡献大的语句,而忽略那些运算次数少的语句,循环语句中处在循环内层的语句往往运行次数最多,即为对运行时间贡献最大的语句。
这样用大写O来体现时间复杂度的的记法,可以称为大O表示法。
一般情况下,随着n的增大,T(n)增长最慢的算法我们称之为最优算法。
因此我们上面的三个求和算法,按顺序时间复杂度为O(n),O(1),O(n^2),分别称为线性阶,常数阶和平方阶。
- O(1)常数阶:每条语句的频度都是1,算法的执行时间不随着问题规模n增大而增长,即使有上千条语句,其执行时间也不过是一个比较大的常数。
- O(n)线性阶:有一个n次循环的循环语句。随着n增长执行时间线性增长。
- O(n^2)平方阶:循环中嵌套一个循环的情况。
常见的算法时间复杂度:
常用的时间复杂度所耗费的时间从小到大:

浙公网安备 33010602011771号