如何找到算法的时间复杂度?

时间:2017-12-20 23:08:05

标签: time-complexity

*嗨,我们刚刚开始讨论这个话题,所以我不确定该怎么做,书中的例子对我没有帮助。 该计划是:

public static Stack<Queue<Integer>> qq(Stack<Queue<Integer>> q1) 
    {
        Stack<Queue<Integer>>copy=new Stack<Queue<Integer>>(); // 1
        Stack<Queue<Integer>>copy1=new Stack<Queue<Integer>>(); // 1
        while(!q1.isEmpty()) // n+1
            copy.push(q1.pop()); // n
        while(!copy.isEmpty()) // n+1
        {
            q1.push(copy.top()); // n
            copy1.push(copy.pop()); // n
        }
        while(!copy1.isEmpty()) // n+1
        {
            Queue<Integer>q=new Queue<Integer>(); // n
            copy.push(q); // n
            int n1=copy1.top().remove(); // n
            while (!copy1.top().isEmpty()==true)
            {
                for (int i=n1+1;i<copy1.top().head();i++)
                    copy.top().insert(i);
                n1=copy1.top().remove();
            }
            copy1.pop(); // n
        }
        while(!copy.isEmpty()) // n+1
            copy1.push(copy.pop()); // n
        return copy1; // 1

例如,如果复杂性为n + 1,我们的老师希望我们这样做,而不是简化为n。

我不知道如何计算我没有写的复杂性,我认为其余的都是正确的。有谁可以向我解释一下? 非常感谢!!

1 个答案:

答案 0 :(得分:0)

时间复杂度取决于程序/代码执行的时间。 粗略地(渐近) 如果你的代码没有任何循环那么它需要恒定的时间,即O(1) 如果你的代码有循环并且它运行n次,那么你的程序时间复杂度是O(n)

在这种情况下,您的代码运行n + 1次,因此您可以得出结论,程序的时间复杂度为O(n) - 渐近。