美文网首页
算法的时间复杂度计算

算法的时间复杂度计算

作者: 光哥很霸气 | 来源:发表于2017-01-09 10:43 被阅读499次

    计算算法的时间复杂度,通常说的是算法的渐进增长时间复杂度,也就是随着数据的变大,该算法所需要的时间是如何增长的。

    推导时间复杂度的原则

    1. 用常数1取代运行事件中的所有加法常数。
    2. 在修改后的运行次数函数中,只保留最高阶数
    3. 如果最高阶项存在且不是1,则去除这个项相乘的常数。

    有以下常见的时间复杂度。

    1.常数阶
    时间复杂度为O(1)
    表示计算量不会随着数据的增长而增长

    var i = 0;
    console.log(i);
    

    2.线性阶
    时间复杂度为O(n)
    表示计算量随着数据的增长而线性增长,增长量与数据增长几乎相同

    
    for(let i=0;i<n;i++){
    //时间复杂度为O(1)的运算
    }
    

    3.平方阶
    时间复杂度为O(n^2)
    表示计算量随着数据的增长而成平方增长

    
    for(let i=0;i<n;i++){
       for(let j=0;j<n;j++{
       //时间复杂度为O(1)的运算
       }
    }
    

    4.对数阶
    时间复杂度为O(logn)
    表示随着数据n的线性递增,计算的递增是成次方递增;比如数据n每次加一,而计算的递增每次以二的次方增加,那么时间复杂度就会介于O(1)和O(n)之间

    for(let i=1;i<n;i*=2){
        //时间复杂度为O(1)的运算
    }
    

    这里i第一次是2(2的1次方),第二次是2*2(2的2次方),第三次是4*2(2的3次方),可以看出每次增加的都是二的指数,那么假设时间复杂度为x,那么就能得出2^x=n;x=log2n;

    相关文章

      网友评论

          本文标题:算法的时间复杂度计算

          本文链接:https://www.haomeiwen.com/subject/icocbttx.html