zoukankan      html  css  js  c++  java
  • 时间复杂度的计算

    算法的时间复杂度是说,一个算法的运行时间,具体的运行时间跟问题规模n有很大的关系,随着规模n的增大运行时间也会越长,这个被称为算法的渐进时间复杂度(O符号来表示),简称时间复杂度。
           语句的频度是指,该语句重复的执行的次数。
           一般计算时间复杂度的步骤为:
              1、计算每个语句的执行次数,然后相加,用T(n)表示
              2、计算出T(n)的数量级,忽略常量、低次幂和最高次幂的系数,得到的就是T(n)的数量级
                   f(n) = T(n)的数量级
              3、计算O时间复杂度,当n - > 无穷大 时,lim( T(n) / f(n))的值为不等于0的常数,则
                  T(n) =  O(f(n))
     
    栗子:
         int num1,num2;                                         频度: 1
         for (int i = 0, i < n ; i ++) {                              频度: 1   (int i = 1)
               num1 += 1;                                              频度: n   
              fori (int j = 1 , j <= n ; j*= 2) {
                  num2 += num1;                                   频度: n  * log2 n (以2为底的)
                   }
              }
     
            按上面的步骤分析:
              1、2 + 4n + 3n*log2 n
              2、f(n) = n * log2 n
              3、lim(T(n) / f(n)) = 3
              所以T(n) = O(n * log2 n)
     
    看完这个例子会发现,其实在好多地方都是多余的,只需要找到执行最多的语句,计算出执行次数的数量级然后用O表示出结果就行了。
  • 相关阅读:
    【深度学习Deep Learning】资料大全
    在谷歌中缓存下载视频离线观看,js代码
    asp.net mvc 中Html.ValidationSummary显示html
    asp.net网站访问时不能显示页面
    k8s install kubeadm网络原因访问不了谷哥and gpg: no valid OpenPGP data found. 解决办法
    火绒杀毒软件更安静
    Linux使用mount挂载Windows共享文件夹
    spark学习
    https://blog.csdn.net/tangdong3415/article/details/53432166
    正则表达式
  • 原文地址:https://www.cnblogs.com/lujianwenance/p/5799423.html
Copyright © 2011-2022 走看看