时间复杂度计算

作者: 升云手札 | 来源:发表于2017-11-27 22:51 被阅读0次

    定义

    在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

    常数阶

    int sum = 0,n = 100;
    sum = (1 + n)*n/100;
    

    时间复杂度为O(1)。

    线性阶

    sum = 0;
    for(int i = 1; i <= n; i ++){
        sum += i;
    }
    

    循环体中的代码必须执行n次,循环的时间复杂度为O(n)。

    对数阶

    int count = 1
    while(count < n){
        count = count * 2;
    }
    

    x个2相乘大于n后,就会推出循环。由2^x=n,得到x = log2n。
    所以这个循环体的时间复杂度为O(logn)。

    平方阶

    for(int i = 0; i < n; i ++){
       for(int j = 0; j< n; j++){
           //时间复杂度为O(1)的语句 
       }
    }
    

    时间复杂度为O(n*n), 即O(n^2)。

    常见的时间复杂度

    执行次数函数
    12 O(1)
    n+9 O(n)
    2n^2+3n+9 O(n^2)
    3log2n+8 O(logn)
    4n+3nlog2n+8 O(nlogn)
    7n^3 + 3n^2 + 6n+5 O(n^3)
    2^n O(2^n)

    相关文章

      网友评论

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

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