loops - 双循环函数的时间复合体

标签 loops math data-structures time-complexity computer-science

我有这个问题:

Func(n)
  for (a = 1; a <= n; a = a * 2)
    for (b = a; b <= n; b = b * 2)
      print a + b

我知道外部循环将运行 loglog(n),但我很难理解内部循环将运行多少。 还有这个函数的时间复杂度的最终答案是多少。 谢谢大家。

最佳答案

也许列出几个输出可能会有所帮助。这里我给出一个 n=10 的例子。

a=1: (1+1) (1+2) (1+4) (1+8)
a=2: (2+2) (2+4) (2+8)
a=4: (4+4) (4+8)
a=8: (8+8)

你可以想象这是一个边的正方形roof(log(n))log(n) + 1如果n是一个精确的对数,即未完全“填充”。这个正方形内的元素数量几乎是面积的一半:

1/2 * log_2(n) * (log_2(n) + 1)

所以这将是你的程序的渐近复杂性。

关于loops - 双循环函数的时间复合体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70974021/

相关文章:

java - 递归或循环

loops - Rust 如何知道何时停止迭代没有上限的范围?

javascript - 如何检查 Handlebars 中的对象是否为空if语句?

c# - 在 C# 中反转数字

c++ - 括号检查功能只测试输入的前 2 个?

java - 使用增强的 for 循环搜索特定字符,但仅打印 ArrayList 中的第一个匹配字符

python - 图灵机欧几里得求最大公约数的算法 python

c++ - 在 C++ 中定义和使用离散概率密度函数

c++ - std::bitset 是否保证结构中的连续内存和恒定大小(以避免填充?)

java - 为什么我收到错误?