【问题标题】:Time Complexity of a weird loop奇怪循环的时间复杂度
【发布时间】:2021-03-24 13:14:41
【问题描述】:

这个循环的时间复杂度是多少?

for(int i = 0; i < n*n; i *= 2)

   { //Something with O(1) complexity here }

我猜是 O(log n*n)。

【问题讨论】:

标签: time-complexity computer-science


【解决方案1】:

你是对的,因为 i 在每次迭代中加倍,并且循环在 i >= n2 时终止,使其运行为 O(log n2) 次迭代。

但是,请注意 O(log n2) = O(2 log n) = O(log n)

编辑:然而,正如 Zilog80 指出的那样,这段代码将i 初始化为 0,这将导致循环无限运行,因为 0 * 2 = 0时间>。但是,如果您将其初始化为某个正数(常数),那么您的计算是正确的。

【讨论】:

  • 由于i计数器的初始化为0,实际上是一个无限循环。似乎不存在适当的符号,但它会是 O(∞)O(0) [意思是无法解决的,我猜 O (∞) 更好] ^^ 除非iO(1) 过程中以某些方式被更改,但 OP 并没有明确这一点。
  • @Zilog80 哦,看那个!谢谢,我会更新我的答案。
猜你喜欢
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 2017-04-11
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多