Skip to content

时间与空间复杂度

时间复杂度

  • 一个函数,用大O表示,比如O(1)、O(n)、O(logN)...
  • 定性描述该算法的运行时间

image.png

javascript
let i = 0;
i += 1;

O(n)

javascript
for (let i = 0; i < n; i += i) {c1
  console.log(i)
}

O(1)+O(n)=O(n)

javascript
let i = 0;
i += 1;
for (let i = 0; i < n; i += i) {
  console.log(i)
}

O(n)*O(n) = O(n^2)

javascript
// 遍历套遍历
for (let i = 0; i < n; i+= i) {
  for (let j = 0; j < n; j += 1) {
    console.log(i, j)
  }
}

O(logN)

javascript
let i = 1;
while(i < n) {
  console.log(i)
  i *= 2
}

空间复杂度

  • 一个函数,用大O表示,比如O(1)、O(n)、O(n^2)...
  • 算法在运行过程中临时占用存储空间大小的量度

O(1)

javascript
// 只声明了单个变量,占用的内存单元
let i = 0;
i += 1;

O(n)

javascript
// 占用了n个内存单元
const list = []
for (let i = 0, i < n; i += 1) {
  list.push(i);
}

O(n^2)

javascript
// 矩阵 n * n 个内存单元
const matrix = []
for (let i = 0; i < n; i+= 1) {
  matrix.push([])
  for (let j = 0; j < n; j += 1) {
    matrix[i].push(j)
  }
}