【发布时间】:2016-04-25 17:06:29
【问题描述】:
int n;
int i, j, k = 0;
for (i = n/2; i <= n; i++) {
for (j = 2; j <= n; j = j * 2) {
k = k + n/2;
}
}
只需要计算代码sn-p的时间复杂度,答案是Θ(nLogn),但你能解释一下它是如何Θ(nLogn)
【问题讨论】:
-
这样您就掌握了所有信息。为什么不能计算?
-
您的提示是不是 O(n!) 但严重的是,如果您无法通过检查弄清楚,请在其中放置一些 printf 调用以跟踪它被调用的频率,看看您是否找不到当你改变循环大小时你自己的模式?
-
"...你能解释一下它是怎么回事 Θ(nLogn)" - 你能解释一下它怎么可能是 但是 Θ(nLogn) 吗?
-
外循环为 N/2(或仅 N)。内循环以 2 的幂或以 2 为底的对数 (n) 计数。 NLog(N) 是吗? (回答是因为他受够了悲伤……)
-
提示:内部循环运行了多少次? (你很幸运 - 每个
i都是成本的)
标签: c algorithm loops time-complexity big-o