【问题标题】:How is the running time calculated for nested "for" loops? [closed]如何计算嵌套“for”循环的运行时间? [关闭]
【发布时间】:2021-11-04 05:22:55
【问题描述】:

最近开始使用这个所以需要你的帮助,假设你已经嵌套了如下所示的 for 循环,范围从 1 到 n,如何根据 Big O、Theta、Omega 计算相同的运行时间?

for(i=1; i<n; i++) {
    for(j=1; j<n; j++) {
       //some piece of code
    }
}

【问题讨论】:

  • 你能想出一种方法来计算//some piece of code被执行的确切次数吗?
  • 实现它并尝试使用 n 的不同值。

标签: algorithm performance timing notation


【解决方案1】:

在这种情况下,它们都是一样的,因为没有逻辑:

  • 第一个循环:1..N,N 次迭代,O(N)(其他两个相同)
  • 第二个循环:相同,1..NO(N)

所以,O(N*N) => O(N^2)

关于theta one,我不习惯使用它,所以也许有人可以扩展答案。但我认为是一样的

【讨论】:

    【解决方案2】:
     for(i=1; i<n; i++) {
         for(j=1; j<n; j++) {
           //some piece of code
          }
      }
    

    让我们仔细看看这段代码。假设我们有一组 10 个项目 (n),我们一个接一个地执行这些循环。首先它必须通过 i 循环。他会将其传递为 1,然后该 1 在 1 变为 2 之前进入第二个循环 10 次。总共它必须通过循环 100 次才能到达终点。在大 O 表示法中,我们总是为最坏的情况计算 O。也就是说,需要一个位于循环末尾的项目。假设我们将 1 添加到 n。现在它必须通过循环多少次? 11 * 11 即 121。因此,每当您的输入增长 1 时,该算法的成本就会呈指数增长。这就是为什么我们说 O(n^2)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2011-11-14
      相关资源
      最近更新 更多