为什么这段代码在 Big Oh 表示法中被视为 O(N^6)?

发布于 2024-11-25 09:18:29 字数 382 浏览 0 评论 0原文

我刚刚阅读另一个问题,这段代码引起了我的兴趣:

for(i = 0; i < n; i++)
{
    for(j = 0; j < i*i; j++)
    {
        for(k = 0; k < i*j; k++)
        {
            pseudo_inner_count++;
            for(l = 0; l < 10; l++);
        }
    }
}

我不明白这是怎么做到的为 O(N^6)。有人可以帮我分解一下吗?

I was just reading another question and this code intrigued me:

for(i = 0; i < n; i++)
{
    for(j = 0; j < i*i; j++)
    {
        for(k = 0; k < i*j; k++)
        {
            pseudo_inner_count++;
            for(l = 0; l < 10; l++);
        }
    }
}

I don't understand how this can be O(N^6). Can someone break it down for me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不打扰别人 2024-12-02 09:18:29

实际上是这样的:

  • i 循环迭代了 O(N) 次,所以 i 的值为 O(N),所以我们可以说 O(I)=O(N)。
  • j 循环迭代 O(I^2) = O(N^2) 次(单独考虑时,没有外部循环)。
  • k 循环迭代 O(I*J) = O(N*N^2) = O(N^3) 次。
  • l 循环仅迭代 10 次,因此时间复杂度为 O(1)。

循环是嵌套的,所以我们必须将它们相乘(你明白为什么吗?)。总计为 O(N)*O(N^2)*O(N^3) = O(N^6)。

Actually it is:

  • The i loop iterates O(N) times, so the value of i is O(N), so we can say O(I)=O(N).
  • The j loop iterates O(I^2) = O(N^2) times (when considered on its own, without the outer loop).
  • The k loop iterates O(I*J) = O(N*N^2) = O(N^3) times.
  • The l loop just iterates 10 times so that is O(1).

The loops are nested so we have to multiply these together (do you understand why?). The total is O(N)*O(N^2)*O(N^3) = O(N^6).

揽月 2024-12-02 09:18:29

第一个循环 n
n² 用于第二个循环
第三个循环的 n3

内循环为 O(1)

总共为 O(n⁶)。

第三个循环是 n3 的原因是,当你考虑它时,j 达到 n2,i 达到 n,所以 i*j 达到 n3。

It's

n for the first loop
n² for the second loop
n³ for the third loop

The inner loop is O(1)

The total is O(n⁶).

The reason the third loop is n³ is because when you think about it j reaches n² and i reaches n, so i*j reaches n³.

怼怹恏 2024-12-02 09:18:29

我会说:

  • n 代表第一个循环
  • n² 代表第二个循环 => 第三次循环的n3 n2 总数
  • =>总共 n⁵
  • 又一个 n 循环 =>总计 n⁶

I would say :

  • n for the first loop
  • n² for the second loop => total of n³
  • n² for the third loop => total of n⁵
  • yet another n-loop => total of n⁶
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文