【发布时间】:2018-06-03 15:40:23
【问题描述】:
你能解释一下 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)?可以举个例子吗。
【问题讨论】:
-
只需将另一个从 0 到 n 的外部循环添加到您的第一个示例中。那是 n * n * log n = n^2 * log n。
-
或者把
for(i=0;i<n; i++)改成for(i=0; i<n*n; i++)。 -
@ScottHunter 谢谢
-
您的第一个代码不是 O(n * logn) 而是 O(infinity),因为内部循环永远不会终止(
j永远不会从 0 更改)。您需要从 1 开始j来修复它。 -
@interjay 感谢您向我解释,我也编辑了我的问题
标签: algorithm data-structures time-complexity big-o