java - 下面代码的复杂度是多少?

标签 java algorithm math complexity-theory time-complexity

根据这段代码:

for (int i=1; i<=N; i*=2)
{
  for (int j=1;j<=i;j++)
  {
    System.out.println("The value for i is "+i+" and the value for j is "+j);
  }
}

第一个 for-loop 将运行 log(n) 次, 起初我想到了 2n-1 作为第二个 for-loop,但它不适用于奇数。

有什么想法吗? :)

最佳答案

  • i = 1时,内循环会运行1次
  • i = 2时,内循环会运行2次
  • i = 4时,内循环会运行4次
  • ...
  • i = N时,内循环会运行N次

打印语句执行1 + ... + N/4 + N/2 + N 次,即O(n)。

关于java - 下面代码的复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26975233/

相关文章:

java - NullPointerException 堆栈跟踪在没有调试代理的情况下不可用

java - 为什么从最大到最小 float 相加不如从最小到最大相加准确?

math - 解决圆圆碰撞

javascript - 计算对象中的哪个坐标最接近所选坐标

java - 找不到在 Eclipse 中导入的外部 jar 的类

java - 为什么 `\.` 不是 Java 正则表达式中的有效转义序列

r - 如何预先确定互斥比较?

java - 在java中,排序时,当我有相同的值时,特定问题的解决方案是什么

c# - 算法挑战 : merging date range

java - 将字节转换为整数 - 为什么每个字节与 0xff 相与?