【问题标题】:time complexity of loops for programming contests problems [closed]编程竞赛问题的循环时间复杂度[关闭]
【发布时间】:2013-12-26 22:20:35
【问题描述】:

for 循环或while 循环哪个时间复杂度更高? 谁能给我一张图表来比较不同循环的时间复杂度? 如果可能的话,建议好的参考资料来了解时间复杂度。

【问题讨论】:

  • 时间复杂度取决于循环中的迭代次数和循环次数。不在循环的类型上。
  • 您的问题定义不明确。循环的时间复杂度取决于迭代次数。类型(for vs while)无关紧要。
  • @AbhishekBansal 如果我知道迭代次数,使用哪个循环??\
  • @Victor 如果我已经知道迭代次数,那么如何决定应该使用哪个循环以最小化时间。

标签: c++ loops for-loop while-loop


【解决方案1】:

除了一些技术细节,while 循环和 for 循环是同构的:

for (a; b; c) { 
    body; 
}

可以变成:

a;
while (b) {
   body;
   c;
}

因此,两者的计算复杂度没有区别。

至于在两者之间进行选择:通常的经验法则是使用 for 循环,前提是三个子句中至少有两个对该循环有意义。

【讨论】:

    【解决方案2】:

    如果您对它们做完全相同的事情,它们应该几乎完全相同。例如:

    int i = 0;
    while (i < 10)
        i++;
    

    for (int i = 0; i < 10; i++);
    

    应该具有几乎完全相同的时间复杂度,因为它们正在做完全相同的事情。

    唯一改变时间复杂度的就是循环内部的内容。但实际上没有理由偏爱 for 而不是 while,除了它增加了一种方便的方式来声明和迭代变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多