算法中时间复杂度与空间复杂度的理解?

时间复杂度 名称
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)的程序步骤序列*/
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zs18753479279/article/details/120132613
今日推荐