时间复杂度
用来描述算法运行的时间。常用大写O表示。类似数学上的无穷
常见的时间复杂度量: O(1),O(n),O(logN),O(nlogN),O(n^2),O(n^3)
const arr = [1,2,3]
console.log(arr[1])
这段代码永远只执行一次,所以时间复杂度为O(1)
for(let i = 0;i < n;i += 1){
console.log(i)
}
这段代码执行了n次,时间复杂度为O(n)
俩者结合 O(1) + O(n) = O(n),n足够大的时候1可以忽略不计
for(let i = 0;i < n;i += 1){
for(let j = 0;j < n;j += 1){
console.log(i,j)
}
}
双重for循环 O(n) * O(n) = O(n^2)
let i = 1
while(i < n){
log(i)
i *= 2
}
这就是不断的求,2^1,2^2....2^n,时间复杂度为O(logN)
空间复杂度
用来描述算法运行所需要的存储空间,用大写O表示
常见的空间复杂度量: O(1),O(n),O(n^2)...
let a = 1
a += 1
只占一个变量空间,空间复杂度为O(1)
const arr = []
for(let i = 0;i < n;i += 1){
arr.push(i)
}
所占存储空间为n,空间复杂度为O(n)
const arr = [];
for(let i = 0; i < n; i += 1){
arr.push([])
for(let j = 0; j < n; j += 1){
arr[i].push(j)
}
}
O(n^2) 就是二维数组