一. 常见的时间复杂度
- 常数阶(O1)
无论代码执行了多少行,只要是没有循环等复杂结构,那这个代码的时间复杂度就都是O(1)
int i = 1;
int j = 2;
++i;
j++;
int m = i + j;
上述代码在执行的时候,它消耗的时候并不随着某个变量的增长而增长,那么无论这类代码有多长,即使有几万几十万行,都可以用O(1)来表示它的时间复杂度。
- 对数阶O(log2n)
int i = 1;
while(i<n){
i = i * 2;
}
i在抵达递归出口的速度:2^i=n, => i=log2n
- 线性对数阶O(nlogN)
for (int m = 1; m < n; m++) {
i = 1;
while (i < n) {
i = i * 2;
}
}
线性对数阶O(nlogN),即将O(n) * O(logN).