为什么这段代码在 Big Oh 表示法中被视为 O(N^6)?
我刚刚阅读另一个问题,这段代码引起了我的兴趣:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
实际上是这样的:
循环是嵌套的,所以我们必须将它们相乘(你明白为什么吗?)。总计为 O(N)*O(N^2)*O(N^3) = O(N^6)。
Actually it is:
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).
是
第一个循环 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³.
我会说:
I would say :