程式設計師面試經典--棧排序
阿新 • • 發佈:2019-02-13
3.6問題:
編寫程式,按升序對棧進行排序(即最大元素位於棧頂)。最多隻能使用一個額外的棧存放臨時資料,但不得將元素複製到別的資料結構中(如陣列)。
思考:
待排序棧s1,將自己的資料從棧頂不斷的出棧按升序插入臨時資料棧s2。插入操作時,可將s1作為緩衝,直到插入操作完成。
注意排序前棧內的資料儲存順序,排序後資料的儲存順序,以及打印出來的資料順序。import java.util.*; class sort{ public static void main(String args[]){ Stack<Integer> s = new Stack<Integer>(); s.push(5); s.push(4); s.push(3); s.push(2); s.push(1); Stack<Integer> r = stackSort(s); while(!r.isEmpty()){ System.out.println(r.pop()); } } public static Stack<Integer> stackSort(Stack<Integer> s){ Stack<Integer> r = new Stack<Integer>(); while(!s.isEmpty()){ int tmp = s.pop(); while(!r.isEmpty()&&r.peek()>tmp){ s.push(r.pop()); } r.push(tmp); } return r; } }