时间复杂度:
时间频度:T(n)一个算法中的语句执行次数称为语句频度或时间频度
n : 算法规模
log : 如果 a^x = N ( a>0,且a≠1) , 那么数x叫做以a为底N的对数(logarithm) ,
记作 x=log(a)N , 其中 , a叫做对数的底数 , N叫做帧数。
算法时间复杂度的定义:
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。
其中f(n)是问题规模n的某个函数。
用大写O()来体现算法时间复杂度的记法,我们称之为大O记法。
时间复杂度 | 术语 |
O(1) | 常数阶 |
O(n) | 线性阶 |
O(n^2) | 平方阶 |
O(logn) | 对数阶 |
O(nlogn) | nlogn阶 |
O(n^3) | 立方阶 |
O(2^n) | 指数阶 |
常用的时间复杂度所耗费的时间从小到大依次是:
O(1) < O(logn) < (n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)