Question - Three stacks can be used to sort a list of numbers.
Assuming stack in holds the input list of numbers,
stack out is to hold the output list after sorting the numbers and
temp is used during the sorting process. The sorting algorithm follows.

1 set up stack in and print it
2 while stack in is not empty repeat
2.1 max = in.pop
2.2 while there are still element in stack in repeat
2.2.1 value = in.pop
2.2.2 if value > max
2.2.2.1 temp.push(max)
2.2.2.2 max = value
2.2.3 else
2.2.3.1 temp.push(value)

2.3 in = temp
2.4 out.push(max)
2.5 temp.clear
3 print sorted stack
---------------------------------------------------------------------------------------------------------------------------------------------------
Answer -

import java.util.*;
import java.io.*;
import javax.swing.JOptionPane;

class SortStack {

   public static void main(String[] args)
   {
    	LinkedList <Integer> sortIn = new LinkedList <Integer>();
    	LinkedList <Integer> sortOut = new LinkedList <Integer>();
    	LinkedList <Integer> sortTemp = new LinkedList <Integer>();
 
    	//A Single Random Object Is Being Used 
    	Random SortNum = new Random();
    	
    	for (int i=1; i<=20; i++)
    		{    		
      			int sortInt = SortNum.nextInt(50);  
      			sortIn.add(sortInt);
      			
      			//Display Dialog Meesage Before Sort
      			JOptionPane.showMessageDialog(null,"Before Sort " + sortIn,"Assignment",JOptionPane.INFORMATION_MESSAGE);
      		}
    
   			System.out.println("Random Number :");
   			System.out.println(sortIn);
   					      
   		//To Check Stack Is Empty
    	while (!sortIn.isEmpty())
   		{
   			int max = sortIn.pop();
   	
   				while (!sortIn.isEmpty())
   				{   			
   					int value = sortIn.pop();
 
   					//Find  The Max Value
   					if (value>max)
   					{
   						sortTemp.push(max);
   						max = value;
   					}
   					else 
   					{
   						sortTemp.push(value);
   					}
   				}
   				
  			sortIn.addAll(sortTemp);
   			sortOut.push(max);
   			sortTemp.clear();
   			
   			//Display Dialog Message After Sort
   			JOptionPane.showMessageDialog(null,"After Sort " + sortOut,"Assignment",JOptionPane.INFORMATION_MESSAGE);
   		}  						
  			//Display The Output
   			System.out.println();
   			System.out.println("Sorted Output :");
   			System.out.println(sortOut);
   			
   }//End Of Main
}//End of Class

----------------------------------------------------------------------------------------------------------------------------------------------------
PS - is there any ways that i can simplify this codes and
it is complicated and confusing as well.

This question has already been answered. Start a new discussion instead.