[程序源代码面试指南第二版] 用一个栈实现另一个栈的排序
描述
只许申请一个栈,用栈排序另一个栈使他从大到小
思路
把stack中元素压入help,让help栈中元素从小到大,最后再压入stack
- 排序栈stack,辅助栈help
- stack pop栈顶元素,叫做cur,用cur和help栈顶元素进行比较 2.1. cur如果小于等于help栈顶元素,压入help 2.2. 如果大于则将help的元素逐一弹出压入stack,直到cur小于等于help,再将cur压入help
- 最后讲help压入stack
咳咳
- 判断栈为空
附件
public class STACK_sort {
public static void sortStackByStack(Stack<Integer> stack){
Stack<Integer> help = new Stack<>();
while(!stack.isEmpty()){
int cur = stack.pop();
while(!help.isEmpty() && help.peek() > cur){
stack.push(help.pop());
}
help.push(cur);
}
while(!help.isEmpty()){
stack.push(help.pop());
}
System.out.println("help"+help);
}
}