1.什么是时间复杂度?
- 简单来说,时间复杂度就是一个函数
- 与其他函数不同它是用大写 O 来表示
- 如: O(1)、O(n)、O(logN)...
- 是用来定性描述该算法的运行时间

- 以2为底的log2n > 1
- n 又比 log2n 大
- n2 (n的2次方) 大于(>) n
1.O(1)的时间复杂度
- 为什么 这两行代码时间复杂度为O(1)呢?
- 因为这两行代码每次只会执行一次
let a = 0
a += 1
2.时间复杂度O(n)
for(let i = 0; i < n; i+=1) {
console.log(i)
}
3.时间复杂度计算 O(1) + O(n) = O(n)
- 如果先后排列那么就相加
- O(n) 足够大的时候O(1)可以忽略不计
1. o(1)
let i = 1
i += 1
2.O(n)
for(let i = 0; i < n; i+=1) {
console.log(i)
}
4. O(n) * O(n) = O(n^2) // n^2 n的2次方
for(let i = 0; i < n; i += 1){
for(let j = 0; j < n; j += 1){
console.log(i, j);
}
}
5.O(logN)
let i = 1;
while(i < n) {
console.log(i);
i *= 2;
}
2. 什么是空间复杂度
- 也是一个函数 大写O来表示
- 如: O(1), O(n), O(n^2)
- 功能: 算法在运行过程中;临时占用存储空间大小的度量,计算代码的占据的空间大小
1. O(1)
let i = 0
i += 1
2. O(n)
const list =[]
for(let i = 0; i < n; i += 1){
list.push(i)
}
3.O(n^2)
- O(n^2) 其实就是一个矩阵
- 矩阵: 行 列
- 本质: 是一个二维数组
- 嵌套了两层数组,存储了2的n次方个变量
const list =[]
for(let i = 0; i < n; i += 1){
list.push([]);
for(let j = 0; j < n; j += 1){
list[i].push(j);
}
}