时间复杂度

989 阅读1分钟

代码的时间复杂度即语句执行的次数。

一、案例

1、案例1

function sum(a, b){
    let c = 1;
    let d = 2;
    return c + d + a + b;
}

这段代码每一行代码都只会执行一次,所以时间复杂度为O(n)。

2、案例2

function sum() {
   let sum = 0;
   for(let i = 0; i < n; i++){
       sum = sum + i;
    }
}

这段代码执行次数最多的是for循环,执行n次,因此时间复杂度为O(n)。

3、案例3

function sum () {
    let sum = 0;   for(let i = 0; i < 10; i++){
       sum = sum + i;
    }
}

这段代码的会执行10次,时间复杂度是O(10), 但是与n无关的都是O(1)。

4、案例4

function sum () {
    let sum = 0;   
    for(let i = 0; i < n; i++){
       sum = sum + i;
       i = i * 2;
    }
}

这段代码中的i的值为2^0,2^1,2^3……,即2^x = n ,x即为执行次数, x值为log以2为底n,去掉底就是这段代码的时间复杂度O(logn)

二、多项式量级和非多项式两级

波浪线的为非多项式量级。

非多项式量级的代码执行时间会随着n的增加而而急剧增加,因此多项式量级的算法是非常低效的

复杂度的效率从高到低:O(1)、O(logn)、O(n)、O(nlogn)、O(n2 )