在这简单的看看时间复杂度的分析。
常见的时间复杂度量级有:
1.常数阶O(1)
{
int i = 0;
int j = 1;
int sum = i + j;
}
这种没有循环的简单语句的时间复杂度就可以看成O(1)
2.对数阶O(logN)
{
int i = 1;
while(i<n){
i *= 2;
}
}
这种有了循环的就看i到n的距离是怎样变化的,i是以每步乘以2的速度靠近n,所以用O(longN)表示。
3.线性阶O(n)
{
int b = 0;
for(int i = 0;i < n;i++){
b++;
}
}
与上面相同还是看i到n的距离是怎样变化的,很明显这里的代码会执行n次所以用O(n)表示。
4.线性对数阶O(nlogN)
看时间复杂度可以理解成代码运行的次数(不知道这里会不会有误导,我自己这样认为),然后线性对数阶O(nlongN)的代码可以组合对数阶与线性阶的代码,如下:
{
for(int i = 0;i < n;i++){
int j = 1;
while(j < m){
j *= 2;
}
}
}
5.平方阶O(n²)
根据上面说的那代码就可以形象的写出来
{
//双重循环
int b = 0;
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
b++;
}
}
}
6.立方阶O(n³)与K次方阶O(n^k)和上面的相似可以参考平方阶来参考。
7.数阶(2^n)这个我也没看过代码,哪个大佬看了这篇垃圾文章可以指点指点吗?
时间复杂度的分析,这里我省略了很多的细节。还请多多包涵。