将T(n)转换为带有楼层的Theta

时间:2016-09-22 19:03:55

标签: java algorithm computer-science

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的一些指导。

提前谢谢

1 个答案:

答案 0 :(得分:0)

在时间复杂度上你并不真正关心常数,所以你的算法是Θ((⌊log3 (n)⌋+1) ×(⌊n/3⌋+1))这很简单Θ(nlog3(n)). 你也不关心对数的基数,因为log3(n)= c * log(n)所以你不再计算常数,所以正确的答案是:

Θ(nlog(n)).