用一个栈实现另一个栈的排序
一个栈中元素的类型为整型,现在想将该栈从顶到底按照从大到小的顺序排序,只允许申请一个栈,除此之外,可以申请新的变量,但是不能申请额外的数据结构,如何完成排序?
package com.test; import java.util.Stack; /** * Created by Demrystv. * * 思路: * 由题意得,辅助栈必须从栈顶到栈底由小到大 * 首先拿到原来栈的第一个元素,如果辅助栈的栈顶元素小于它,则将辅助栈中的元素逐一弹回到原来栈中 * 直到辅助栈的栈顶元素大于等于它,然后再将刚刚拿到的元素放到辅助栈中 * 如果一开始拿到的原来栈的第一个元素,辅助栈的栈顶元素大于等于它,直接将拿到的元素放到辅助栈中 */ public class SortSackByAnother { public void sortStackByAnother(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()); } } }