O(n ^ 2)来自O(n ^ 2 * log n)?(Where O(n^2) comes from in O(n^2 * log n)?)

编程入门 行业动态 更新时间:2024-10-27 21:25:00
O(n ^ 2)来自O(n ^ 2 * log n)?(Where O(n^2) comes from in O(n^2 * log n)?)

你能解释一下O(n ^ 2 * log n)的样子吗? 我明白了O(n * log n)

s=0 for(i=0; i<n; i++) { for (j=1; j<n; j *= 2) { s=s+i*j; } s=s+1 }

当外循环从1运行到n是O(n)并且内循环每个外循环重复log(n)次,例如j * = 2.此外,我确实理解O(n ^ 2)的作用(性能与输入数据大小的平方例如)

s=0 for(i=0; i<n; i++) { for (j=0; j<n; j++) { s=s+i*j; } s=s+1 }

但是什么是O(n ^ 2 * log n) ? 你能举个例子吗?

Can you please explain what O(n^2 * log n) can look like? I do understand O(n * log n) :

s=0 for(i=0; i<n; i++) { for (j=1; j<n; j *= 2) { s=s+i*j; } s=s+1 }

when outer loop runs from 1 to n is O(n) and the inner loop repeats log(n) times per outer loop e.g j *= 2. Also I do understand what O(n^2) does (performance is directly proportional to the square of the size of the input data e.g)

s=0 for(i=0; i<n; i++) { for (j=0; j<n; j++) { s=s+i*j; } s=s+1 }

but what is O(n^2 * log n)? Can you please give an example.

最满意答案

你只需要在外面添加一个for循环。 这使得O(n ^ 2 * log n)因为你重复O(n * log n) n次

for(int k=0; k<n; k++) { s=0 for(i=0; i<n; i++) { for (j=0; j<n; j *= 2) { s=s+i*j; } s=s+1 } }

You only need to add one for loop on the outside. That makes it O(n^2 * log n) because you repeat O(n * log n) n-times.

for(int k=0; k<n; k++) { s=0 for(i=0; i<n; i++) { for (j=0; j<n; j *= 2) { s=s+i*j; } s=s+1 } }

更多推荐

本文发布于:2023-07-05 01:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1031302.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:log

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!