java - 语句执行的次数(以 n 为单位)

标签 java big-o analytics

我想要真正的方法来获取代码中语句的执行次数(以 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)

精确的执行次数基于 geometrical progression 的总和。外循环将执行 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,因此永远不会满足条件,从而导致无限循环。

关于java - 语句执行的次数(以 n 为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48949926/

相关文章:

algorithm - 渐近概念 : What is n₀ in formula, 我们如何找到常数

sql - 对连续记录进行分组的 Oracle SQL 查询

algorithm - 解决递归关系 : T(n)=T(n-1)+T(n/2)+n

java - LibGDX:循环时使用 SpriteBatches

java - Kotlin从xml转换为具有样式的html

java - 是否可以使用 FitNesseSuite JUnit runner 运行 fitlibrary 测试?

algorithm - 为什么 O(1) != O(log(n)) ?对于 n=[整数, 长, ...]

java - 与 olap4j 兼容的内存和可嵌入 OLAP 实现

sql - Oracle - 相关子查询问题

java - 构建和部署成功,但没有 Web 进程在 Spark 上的 Heroku 上运行(Java 框架)