一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?
import java.util.Scanner;
import java.util.Stack;
public class Main {
private static void sort(Stack<Integer> stack) {
Stack<Integer> helper = new Stack<>();
while (!stack.isEmpty()) {
Integer pop = stack.pop();
while (!helper.isEmpty() && helper.peek() < pop) {
stack.push(helper.pop());
}
helper.push(pop);
}
while (!helper.isEmpty()) {
stack.push(helper.pop());
}
}
private static void print(Stack<Integer> stack) {
StringBuilder ret = new StringBuilder();
while (!stack.isEmpty()) {
ret.append(stack.pop()).append(" ");
}
System.out.println(ret.toString().trim());
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
Stack<Integer> stack = new Stack<>();
for (int i = 1; i <= n; ++i) {
stack.push(in.nextInt());
}
sort(stack);
print(stack);
}
}
}
心之所向,素履以往 生如逆旅,一苇以航