算法總結之 用一個棧實現另一個棧的排序
阿新 • • 發佈:2017-09-12
new 算法總結 cnblogs peek 如果 全部 class integer 排序
用一個棧實現另一個棧的排序
一個棧中元素的類型為整型,現在想將該棧從頂到底按從大到小的順序排序。只允許申請一個棧。除此之外可以申請新的變量,但不能申請額外數據結構
思路: 將要排序的棧記為 stack, 申請的數組棧記為help。
stack上執行pop操作, 彈出的元素記為cur
如果cur <= help.peek() 則將cur直接壓入help
如果 cur>help.peek() 將help元素逐一彈出,最後將help中的所有元素彈出逐一壓入stack 直到cur小於 help.peek()
一直執行這樣的操作,直到stack中的全部元素壓入到help。 最後將help中的所有元素註意壓入stack
package TT; import java.util.Stack; public class Test123 { public static void sortStackBystack(Stack<Integer> stack){ Stack<Integer> help = new Stack<Integer>(); 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()); } } }
算法總結之 用一個棧實現另一個棧的排序