【问题标题】:for loop with many iterations vs for loop with fewer iterations迭代次数多的 for 循环与迭代次数少的 for 循环
【发布时间】:2014-06-09 03:11:14
【问题描述】:

假设我们有 for 循环 (a) 将有 100 次迭代,for 循环 (b) 将有 50 次迭代。

哪个更有效率?

我认为 (b) 更有效,因为它的迭代次数更少,但是 (a) 和 (b) 的 big - o 都是 n

我是不是想多了,误用了 big o 的概念?

【问题讨论】:

  • Big-O 分析不适用于这种情况,因为它基于输入的数量。你说得对,50 次迭代比 100 次迭代更有效,但这不是 Big-O 的问题。
  • 两种算法都是 O(n) 并不意味着它们的运行时间相同。

标签: for-loop iteration big-o


【解决方案1】:

要详细了解在何种意义上减少迭代更有效,请阅读循环展开(或循环展开)。

【讨论】:

    【解决方案2】:

    大 O 表示函数增长率的上限。这只是一个估计。

    在您的情况下,两个循环(或者实际上是具有不同迭代次数的相同循环)具有相同的“O(n)”时间复杂度。即循环的性能与输入的数量成正比。 (绘制线性时间与输入图)

    • 对于特定案例(最差/最佳/平均)具有相同复杂性的两个不同函数/算法仅意味着它们在该案例中具有相同的“增长率”,而不是它们在实际运行中的表现完全相同。

    所以在实际测量中,具有 50 (n=50) 次迭代的相同循环将比具有 100 (n=100) 次迭代的循环花费更少的时间。

    您可能没有意识到它是一种用于函数/算法的增长率/性能估计的理论机制。

    【讨论】: