public static int myfun2(int n) {
int p, k, t;
p=n;
k=10;
while(p>=1){
k=k+p;
for(t=n; t>=0; t=t-3){
System.out.println(p + ", "+t);
k++;
}
p=p/3;
}
return k;
}
以上是我必须执行分析的一些代码。我想出了公式(⌊log3(n)⌋+ 1)×(⌊n/3⌋+ 1)。这似乎是正确的答案。我遇到的问题是将其分配给更为通用的Theta,例如:Theta Choices
这是第一次在分析中处理地板,所以我不知道它们对此有何影响。我真的很感谢为此找出Theta的一些指导。
提前谢谢
答案 0 :(得分:0)
在时间复杂度上你并不真正关心常数,所以你的算法是Θ((⌊log3 (n)⌋+1) ×(⌊n/3⌋+1))
这很简单Θ(nlog3(n)).
你也不关心对数的基数,因为log3(n)= c * log(n)所以你不再计算常数,所以正确的答案是:
Θ(nlog(n)).