第一篇:时间复杂度

191 阅读1分钟

# 概念 一个函数,用大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