题记
初级理解就是,完成基本的时间复杂度的计算。复杂一点的时间复杂度,还是需要算一会的。
常数阶O(1)
这种没有循环的代码,无论多少行,时间复杂度都是O(1)
int i = 0;
++i;
int m = i+m
对阶数O(logN)
i=i*2,i就会无线接近于n,直到i=>的时候,循环停止。
设经过X次循环之后,i>n。
所以得到表达式:2^X=n,就可以解出X=log2^n。
nt i = 1;
while(i<n)
{
i = i * 2;
}
线性对数阶O(nlogN)
O(nlogN)就是在O(logN)的基础之上再*n,即可以加一层循环。
for(m=1; m<n; m++)
{
i = 1;
while(i<n)
{
i = i * 2;
}
}
平方阶O(n^2)
跟O(n)一样,是最简单的两种时间复杂度。
for(x=1; i<=n; x++)
{
for(i=1; i<=n; i++)
{
j = i;
j++;
}
}
记:
O(1) < O(logn) < (n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
待续,肯定还有更复杂难算的时间复杂度。