2021/9/12 算法的时间复杂度与空间复杂度

2021/9/12 算法的时间复杂度与空间复杂度

一般可以从一个算法的时间复杂度与空间复杂度来评价算法的优劣。

时间复杂度:时间增长的趋势

? 通俗来讲就是计算机运行一个算法时,程序代码被执行的总次数

空间复杂度:内存空间增长的趋势

T(n) 表示时间。

常见的渐进时间复杂度有:

style="zoom:25%;"
2021/9/12 算法的时间复杂度与空间复杂度

时间复杂度计算

1 O(1)

复杂度为常数,不会随着变量的改变而改变

int x = 0;
int y = 1;
int temp = x;
x = y;
y = temp;

2 O(n)

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

3 O(logN)

int i = 1;
while (i<n){
  i = i * 2;
}
// 2^k = n
// k = logN

4 O(n logN)

for(int j =0;j<n;j++){
  int i = 1;
  while (i<n){
    i = i * 2;
  }
}
// 在n层循环中套了一层logN

5O(n^2) n平方

for (int i=1;i<n;i++){
  for (int j = 1;j<n;j++{
    xxx;
  }
       }

6 O(nm)

for (int i=1;i<n;i++){
  for (int j = 1;j<m;j++{
    xxx;
  }
       }

空间复杂度计算

用S(n) 表式

S(n) = O(f(n))

1 O(1)

int x = 0;
int y = 0;
x++;
y++;
// x,y无论怎么赋值,在内存分配上总是4个字节

2 O(n)

int []array = new int[n];
for (int i=0;i<n;i++){
  array[i] = i;
}
// 取决于array的长度,即n的大小

3 O(n^2)

二维数组,矩阵相加。

2021/9/12 算法的时间复杂度与空间复杂度

上一篇:slot-scope


下一篇:Java基础06