"Coding Interview Guide" -- 用一个栈实现另一个栈的排序

题目

  一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?

 1     import java.util.Stack;
 2 
 3     public void sortStackByStack(Stack<Integer> stack)
 4     {
 5         Stack<Integer> auxiliary = new Stack<>();
 6         while(!stack.empty())
 7         {
 8             int cur = stack.pop();
 9             while(!auxiliary.empty() && cur > auxiliary.peek())
10             {
11                 stack.push(auxiliary.pop());
12             }
13             auxiliary.push(cur);
14         }
15         while(!auxiliary.empty())
16         {
17             stack.push(auxiliary.pop());
18         }
19     }

 

 

来源:左程云老师《程序员代码面试指南》

 

posted @ 2019-06-13 17:06  Latuper  阅读(135)  评论(0编辑  收藏  举报