java - 估计算法运行时间的增长顺序

标签 java algorithm data-structures

我正在学习在线类(class),但我不太明白如何估计算法的增长顺序,这里有一个例子

以下代码片段最坏情况运行时间的增长顺序是什么 作为 N 的函数?

   Int sum = 0;
   For (int i = 1; i <= 4*N; i = i*4)
     for (int j = 0; j < i; j++)
    sum++;

谁能告诉我如何获得它

最佳答案

只需计算语句 sum++; 被执行了多少次。

= 1 + 4 + 16 + 64 ... + 4*N

这是一个公因数为 4 的等比级数。如果该级数的项数为 k,则

4^k = 4*N.

Sum of series = (4^k - 1)(4-1) = (4*N - 1)/3.

按照增长顺序,我们忽略了恒定因素。

因此复杂度为 O(N)。

关于java - 估计算法运行时间的增长顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785291/

相关文章:

java - stack.clear() 更快还是弹出每个元素更快?

java - 如何将 gzipped rdf 文件加载到 rdf4j 存储库?

java - 有什么方法可以从 Lambda 闭包中停止 Stream.generate 吗?

c++ - 使用 <algorithm> 对结构 vector 进行排序

c++ - 给定一组点,找到与查询点曼哈顿距离最小的点

algorithm - BST 元素排序

c++ - 陷入二维逻辑

java - 如何在 ActiveObjects 中将两个 OneToMany 关系写入同一个表

java - 读取编辑的文本文件扫描仪java

java - 如何从 Java 数组中删除对象?