1. 程式人生 > >算法總結之 用一個棧實現另一個棧的排序

算法總結之 用一個棧實現另一個棧的排序

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());
    	}
    	
    }
	
	
	
}

  

算法總結之 用一個棧實現另一個棧的排序