计算时间复杂度的式子:T(n)=O(f(n))
n是问题的规模
f(n)是关于问题规模的某个函数
T(n)是算法的时间复杂度
计算方法:
1,用常数1取代运行中的所有加法常数
2,在修改后的运行次数函数中,只保留最高阶项
3,如果最后阶项存在,而且不是1,就去掉最高阶的常数系数
例如:
int n=10;//因为是常数项,所以只执行一次
for(int i=0;i<n;i++)
{
//C行代码
}//执行C*n次
结果:1, f(n)=C*n+1
2, T(n)=O(C*n)
3 ,T(n)=O(n) 时间复杂度为线性阶
int n=10;
for(int i=0;i<n;i++)//外层循环执行n次
{
x行代码
for(int j=0;j<n;j++)//每执行一次外层循环,就执行n次内层循环
{
y行代码
}
}
结果:1,f(n)=x*n+n*y*n
2, T(n)=O(n*y*n)
3, T(n)=O(n^2) 时间复杂度为平方阶
循环结构的时间复杂度是:循环结构体的时间复杂度*该循环运行的次数
时间复杂度的排列:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)