答案 0 :(得分:2)
这是一个分拣设备。
它旋转队列(通过堆栈),直到最小元素被推入堆栈。然后,最小的元素仍然存在。
此过程继续使用剩余的N-1个元素,依此类推。
如果队列最初排序,则循环仅执行N次。
如果队列最初按递减顺序排序,则循环执行2N-1 + 2N-3 + ... + 1 =N²次,这是最坏的情况。
答案 1 :(得分:0)
当我在java中运行这个程序时,我按降序获得256个数组。
int count=0;
int[] q = new int[] {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
Queue<Integer> queue = new LinkedList<Integer>();
Stack<Integer> stack = new Stack<Integer>();
for(int a : q)
{
queue.add(a);
}
while(!queue.isEmpty())
{
if(stack.isEmpty() || stack.peek() <= queue.peek())
{
Integer x=queue.remove();
stack.push(x);
}
else
{
Integer x=stack.pop();
queue.add(x);
}
count++;
}
System.out.println(count);