05-算法复杂度

188 阅读1分钟

复杂度

复杂度是属于数据结构思想中的一个衡量对应的性能和效率的单位。主要划分为两块分别为时间复杂度 和空间复杂度。

时间复杂度

在恒定的机器环境的运行时间和执行次数的比例称为时间复杂度。时间复杂度主要用于衡量对应的执行速度。一般用O表示。

时间复杂度的划分

常数阶 O1 最低的时间复杂度,执行一次即可得出结果

console.log('aa')

线性阶 On 数据增大多少 耗时就增加多少

for(var i=0;i<n;i++){
    console.log('hello world') //执行n次
}

对数阶 Ologn

var i = 1
while(i<n){
    i *= k//执行次数 n的k次方根
}

线性对数阶 Onlogn 即 线性阶 嵌套 对数阶

for(var i=0;i<n;i++){
    var i = 1
    while(i<n){
        i *= k//执行次数 n的k次方根 * n
    }
}

平方阶 On^2 嵌套n层即on^n

for(var i=0;i<n;i++){
    for(var i=0;i<n;i++){
        console.log('hello world') //执行n * n次
    }
}

时间复杂度的优先级(越低越好)

O1 < Ologn < On < OnLogn < On^2 < On^3 < On^n ...

空间复杂度

在恒定的机器环境内容运行代码开启的内存(开启的内存)和对应的空间的比例。主要衡量对应的内存消耗。