时间复杂度 | 名称 |
---|---|
1 | 常数 |
logn | 对数 |
n | 线性 |
nlogn | 线性对数 |
n^2 | 平方 |
n^3 | 立方 |
2^n | 指数 |
1常数阶O(1)
int sum = 0, n = 100; /*执行一次*/
sum = (1 + n) * n / 2; /*执行一次*/
printf("%d",sum); /*执行一次*/
2线性阶O(n)
int i;
for(i = 0; i < n; i++){
/*时间复杂度为O(1)的程序步骤序列*/
}
3对数阶O(logn)
public class TS {
public static void main(String[] args) {
int i=1;
int n= 100;
while(i<n) {
i = i*2;
}
}
4平方阶O(n^2)
int i, j;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
/*时间复杂度为O(1)的程序步骤序列*/
}
}
下面这个时间复杂度是:O(n^2)
int i, j;
for(i = 0; i < n; i++){
for(j = i; j < n; j++){
/*注意j = i而不是0*/
/*时间复杂度为O(1)的程序步骤序列*/
}
}
5立方阶O(n^3)
int i, j;
for(i = 1; i < n; i++)
for(j = 1; j < n; j++)
for(j = 1; j < n; j++){
/*时间复杂度为O(1)的程序步骤序列*/
}