【发布时间】:2016-02-05 01:10:56
【问题描述】:
我得到了这个算法,并被告知要找到它的复杂度 big theta。
for (i = 1; i <= n; i++) {
j = n;
while( j >= 1) {
j = j/3;
}
}
我知道外部 for 循环运行 n 次。虽然 while 循环更棘手,它是否可能是 log n(以 3 为底)。总共使它成为 n*log3n
这对吗?
【问题讨论】:
-
你是怎么把它格式化成三垒的?
-
是的,这是正确的。内部循环执行的次数固定为 log n,以 3 为底。
-
按edit 了解:-)
-
啊,好的,谢谢你,所以 nlogn(base 3) 工作,谢谢!
-
(基数 3)是错误的。您可以转换
log x(base n) = c log x(base m)。鉴于在 Theta 表示法中,我们删除了每个项的系数,添加 (base 3) 是错误的。因此,您的答案的正确形式应该是nlogn。
标签: algorithm big-o time-complexity complexity-theory