C++ 可逆排队的渐近分析

C++ 可逆排队的渐近分析,c++,stack,queue,big-o,asymptotic-complexity,C++,Stack,Queue,Big O,Asymptotic Complexity,我想知道这个函数的大O或大θ符号是什么,如果我们用n个元素的队列来调用它。它是否与On^2类似,因为我们两次推动和弹出n个元素,以便以相反的顺序将其从堆栈移回队列?感谢您的帮助。此函数的大O已打开,因为您只需遍历队列两次。从理论上讲,如果执行K次,这也是正确的,其中K是一个常数,它不会随队列大小n而改变。例如,^2上有一个循环位于另一个循环的内部,因此要遍历队列n*n次 您还可以检查: 当元素数量增加一倍时会发生什么?试着在纸上或手指上用五种元素,然后用十种元素。操作的数量会发生什么变化?是四倍

我想知道这个函数的大O或大θ符号是什么,如果我们用n个元素的队列来调用它。它是否与On^2类似,因为我们两次推动和弹出n个元素,以便以相反的顺序将其从堆栈移回队列?感谢您的帮助。

此函数的大O已打开,因为您只需遍历队列两次。从理论上讲,如果执行K次,这也是正确的,其中K是一个常数,它不会随队列大小n而改变。例如,^2上有一个循环位于另一个循环的内部,因此要遍历队列n*n次

您还可以检查:

当元素数量增加一倍时会发生什么?试着在纸上或手指上用五种元素,然后用十种元素。操作的数量会发生什么变化?是四倍吗?
    void reverseQueue(queue<int>& Queue)
    {
         stack<int> Stack;
         while (!Queue.empty())
         {
             Stack.push(Queue.front());
             Queue.pop();
         }
         while (!Stack.empty())
         {
             Queue.push(Stack.top());
             Stack.pop();
         }
    }