时间复杂度和空间复杂度

时间复杂度

时间复杂度O:代表随次数增长所用时间增长的趋势
(渐进时间复杂度T(n)=O(f(n)),f(n)代表执行总次数,O代表正比例关系)
例如常见的循环:

for(i=0;i<n;i++){
	x++;
}

进入时执行一次i,此后每一次循环执行x 然后是常见的二维数组循环:

for(i=0;i<n;i++){
	for(j=0;j<n;j++){
		a[i][j]=0;
	}
}

时间复杂度则为O(n²)

时间复杂度量级中,O(1)、O(n)、O(logn)是随n增长较缓慢的
O(1):

x=1;
y=2;
x=y;
int temp=x;

O(n)刚刚提过了
O(logn):

i=1;
while(i<n){
	i=i*2
}

设k为算法复杂度,2^k=n,则k=logn

空间复杂度

空间复杂度O:代表占的内存随次数增长的趋势
O(1):

x=1;
y=x;

O(n):

int[] a=new int[n];
for(int i=0;i<n;i++){
	a[i]=i;
}

O(n²):

int[][] a=new int[n][n];
for(int i=0;i<n;i++){
	for(int j=0;j<n;j++){
		a[i][j]=0;
	}
}

你可能感兴趣的:(剑指offer)