# 概念
一个函数,用大O表示,比如O(1)、O(n)、O(logN)......
定性描述算法的运行时间
时间算法度为O(1)的例子: O(1)
let i = 0;
i += 1;
分析:每次执行这两行代码时,永远只会执行一次。因为其中没有涉及任何循环之类的代码。
时间算法度为O(n)的例子:
1. O(n)
for (let i = 0; i < n; i += 1) {
console.log(i);
}
分析:每次执行这三行代码,中间for循环的代码执行了n次,随着i的变换,i也会跟着增大
2. O(1) + O(n) = O(n)
let i = 0;
i += 1;
for (let i = 0; i < n; i += 1) {
console.log(i);
}
分析:前面执行时间复杂度为O(1), 后面执行时间复杂度为O(n)。如果两个时间复杂度先后排列,就需要两个时间复杂度相加,并且取时间复杂度增长趋势过快的为整体的时间复杂度
时间复杂度为O(n^2)的例子: O(n) * O(n) = O(n^2)
for (let i = 0; i < n; i += 1) {
for (let j = 0; j < n; j += 1) {
console.log(i, j);
}
}
时间复杂度为O(log)的例子: O(logN)
let i = 0;
while (i < 0) {
console.log(i);
i *= 2;
}
分析:其实就是求2的多少次方为N