代码的时间复杂度即语句执行的次数。
一、案例
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 )