繁体   English   中英

以 n 为单位执行语句的次数

[英]number of times a statement gets executed in terms of n

我想要真正的方法来获取我的代码中的语句根据n执行的次数。

例如:在这段代码中, MyStatement1MyStatement2执行了多少次,为什么?

sum = 0;
for (i=1; i<=n; i*=2) {
    for (j=1; j<=i; j++) {
        sum++; // MyStatement1
    }

    for (k=1; j<=n; k++) {
        sum++; // MyStatement2
    }
}

MyStatement1 :O(n)

精确的执行次数基于几何级数的总和。 外循环将执行m次,其中2^m = n因此m = log2(n)

内循环将执行1 + 2 + 4 +... + 2^m次。 这是几何级数的总和:

(1-2^m)/(1-2) = O(2^m) = O(2^log2(n)) = O(n)

MyStatement2 :无穷大

在执行第二个内循环j=log2(n) 由于它小于n ,因此永远不会满足条件,最终会成为无限循环。

由于i开始时小于n并且第一个for循环将j带到i ,因此第二个for循环是无限的。 您需要将第二个循环的循环条件更改为k <= n否则它是一个毫无意义的程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM