1.复杂度
时间复杂度 空间复杂度
更短时间 更短空间
o(n)算法所执行的时间 规模
时间复杂度
不是代码真正的时间
随着数据的增长所消耗时间表达的趋势
// o (1)
const fnA = () => {
console.log("hello world");
return 1;
};
// o(n)
const fnB = () => {
for (let i = 0; i < n; i++) {
// 执行n+1次
console.log("hello world"); // n
}
return 1; // 1
};
// o(n^2)
const fnC = () => {
for (let i = 1; i < n; i++) {
// n
for (let j = 1; j < n; j++) {
// n * n
console.log("hello world"); // n * n
}
}
return 1;
};
// o(logN)
const fnD = () => {
// log(2^n)
let i = 1;
while (i < n) {
i *= 2;
}
};
拓展细分时间复杂度的种类
-
最好情况下的时间复杂度
-
最坏情况下的时间复杂度
-
平均情况下的时间复杂度(加权)
-
均摊时间复杂度(高复杂度->低复杂度)
总结
-
时间复杂度:量级最大的部分
-
嵌套 循环 递归
-
o(1)、o(logN)、o(NogN)、o(N^2)、o(N^3)
-
空间复杂度
随着数据的增长所消耗空间的表达的趋势