Suggerimenti per la scrittura del metodo sortStack

Si supponga che i dati siano contenuti nella pila s. Il seguente codice realizza selectionSort su pile: infatti usa due cicli annidati per selezionare iterativamente il valore massimo nella parte residua della pila.
Stack temp1 = new ArrayStack();
while (!s.isEmpty())
  temp1.push(s.pop());  // travasa il contenuto di s in temp1
while (!temp1.isEmpty())
{
    Stack temp2 = new ArrayStack();
    Comparable max = (Comparable) temp1.pop();
    while (!temp1.isEmpty())    //questo ciclo cerca il valore max 
    {                           //esaminando tutti i dati di temp1
       Comparable c = (Comparable) temp1.pop();
       if (c.compareTo(max) < 0)
          temp2.push(c);     //scrive in temp 2 tutti i valori estratti da temp1...
       else
       {  temp2.push(max);    //... tranne che il valore max
          max = c;
       }
    }
    s.push(max);     //il valore max viene scritto in s
    temp1 = temp2;  // alla successiva iterazione del ciclo interno temp1 contiene
                     // un elemento in meno, quello con valore massimo
}