一丶时间复杂度是什么
- 一个函数,用大O表示,比如O(1),O(n),O(logN)…
- 定型描述该算法的运行时间(描述的是一个大概时间,没有具体时间)
具体参考下图
- O(1)
let i = 0
i += 1
- O(N)
for(let i = 0 ; i< n ;i++){
console.log(i)
}
- O(1) + O(n) = O(n)
let i = 0
i+=1
for(let j = 0;j < n;j++){
console.log(j)
}
- O(n) * O(n) = O(n^2)
for(let i = 0 ;i<n;i++){
for(let j = 0 ;j< n ;j++){
console.log(i,j)
}
}
- O(logN)
let i = 0
while(i<n){
console.log(i)
i *= 2
}
二丶空间复杂度
- 一个函数,用大O表示,比如O(1),O(n),O(logN)…
- 算法在运行过程中临时占用存储空间的大小(代码占用存储空间的大小)
- O(1)
let i = 0
i += 1
- O(N)
let list = []
for(let i = 0 ; i< n ;i++){
list.push(i)
}
- O(n^2)
const matrix = []
for(let i = 0 ;i<n;i++){
matrix.push([])
for(let j =0 ;j<n ;j++){
matrix[j].push(j) //矩阵,本质就是一个二维数组
}
}