算法复杂度:空间,时间
什么是复杂度
- 程序执行时需要的计算量和内存空间(和代码是否简洁无关)
- 复杂度是数量级(方便记忆,推广),不是具体的数字
- 一般针对一个具体的算法,而非一个完整的系统
时间复杂度-程序执行时需要的计算量(CPU)
- O(1) 一次就够(数量级)
- O(n) 和传输的数据量一样(数量级)
- O(n^2) 数据量的平方(数量级)
O(1) 的空间复杂度代码展示
function fn (obj = {}) {
// O(1)
return obj.a + obj.b +obj.c
}
O(n)的空间复杂度代码展示
function fn(array = []) {
// O(n)
for (let index = 0; index < array.length; index++) {
const element = array[index];
console.log(element)
}
}
O(n^2)的空间复杂度代码展示
function fn(array = []) {
// O(n^2)
for (let index = 0; index < array.length; index++) {
for (let j = 0; j < array.length; j++) {
const element = array[j];
console.log(element)
}
}
}
O(log N)的图例
- O(logn)数量级的对数(数量级别)
- O(n*logn)数据量+数量级的对数(数量级)
代码演示
function fn(array = []) {
// O(n*logn)
for (let index = 0; index < array.length; index++) {
// 二分
}
O (n^2) //嵌套关系
}