题目:实现一个栈的排序,只能申请一个辅助栈,不能用其他的数据结构?
思路:
原栈记为stack,辅助栈记为help,在stack上执行pop操作,弹出的元素记为cur。
如果cur小于help的栈顶元素,则将cur直接压入help
如果cur大于help的栈顶元素,则将help的元素逐一弹出并压入stack,知道cur小于或等于help的栈顶元素,再将cur压入help。
public static void sortStackByStack(Stack<Integer> stack) {
Stack<Integer> help = new Stack<Integer>();
while(!stack.isEmpty()) {
int cur = stack.pop();
while(!help.empty()&&help.peek()<cur) {
stack.push(help.pop());
}
help.push(cur);
}
while(!help.isEmpty()) {
stack.push(help.pop());
}
}