下面的方法的复杂度是多少?
我仍在学习使用大 O 表示法的复杂性测量,想知道我是否正确地说以下方法的复杂性是 O(n*log4n),其中“4”是下标。
public static void f(int n)
{
for (int i=n; i>0; i--)
{
int j = n;
while (j>0)
j = j/4;
}
}
I'm still learning about complexity measurement using the Big O Notation, was wondering if I'm correct to say that following method's complexity is O(n*log4n), where the "4" is a subscript.
public static void f(int n)
{
for (int i=n; i>0; i--)
{
int j = n;
while (j>0)
j = j/4;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,你是对的,函数的复杂度是
O(n*log_4(n))
Log_4(n) = ln(n) / ln(4)
并且ln(4)
是一个常量,因此如果您的函数的复杂度为O(n*log_4(n))
,它的复杂度也为O(n*log_4(n))
代码>O(n*ln(n))Yes, You are correct, that the complexity of the function is
O(n*log_4(n))
Log_4(n) = ln(n) / ln(4)
andln(4)
is a constant, so if Your function has complexityO(n*log_4(n))
it is also true, that it has a complexity ofO(n*ln(n))
你的意思
?
在这种情况下,你也是对的。其复杂度为 O(nlogn)。使用4作为下标也是正确的,但这只会让写起来更加麻烦。
即使使用
j=n
行,其时间复杂度也是 O(nlogn)。事实上,更准确地说,你可以说它是 Theta(n logn)。
Did you mean
?
In that case, too you are correct. It is O(nlogn). Using the 4 as subscript is correct too, but it only makes it more cumbersome to write.
Even with the
j=n
line, it is O(nlogn).In fact to be more accurate you can say it is Theta(n logn).
是的,你是对的,复杂度是 n* log4(n)
yes you are right, complexity is n* log4(n)