QuickSort Com Strings

Galera alguem tem um exemplo de QuickSort sendo com Strings eu procurei na net mais não achei nenhum, so axei com inteiros mas quando eu transformo para String fica com muitos erro e não funciona, Alguem Sabe um site que tenho um exemplo parecido ou que ensine como faz.
Axei esse Exemplo com inteiros mas não consegui modificar para String quem souber e querer me ajudar, ou souber um site:
Olha o codigo:

import javax.swing.JOptionPane; 
import javax.swing.JTextArea; 

public class Quick 
{
 private static void ordena(int a[], int p, int u) 
     { 
       int i = p, f = u;                        // Extremos 
       int x = (int) (Math.random()*(u-p+1))+p; // Aleatório 
       int pivô = a[x];                         // para evitar quadrático 
       
       while (i <= f)  // Enquanto não se cruzarem 
       {                        
         
         while (i < u && a[i] < pivô) i++;      // Organiza primeira metade 
         
         while (f > p && a[f] > pivô) f--;      // Organiza segunda metade 
         
         if (i <= f) {                          // Se ainda não acabou 
           x = a[f];                            // troca os elementos 
           a[f--] = a[i];                       // dos dois lados 
           a[i++] = x;                          // da lista 
         } 
       } 
       
       if (p < f) ordena(a,p,f);                // a[p]..a[f] < pivô 
       if (i < u) ordena(a,i,u);                // a[i]..a[u] > pivô 
       
       
     } 
     
     public static void main(String args[]) 
     { 
        String saida=""; 
        JTextArea texto = new JTextArea(10,10); 
        int vet[] = new int [10]; 
        int i; 
        
        for(i=0;i<vet.length;i++) 
        { 
           vet[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"Dígite o "+(i+1)+"° número","ATENÇÂO",JOptionPane.WARNING_MESSAGE)); 
           
        } 
        
        ordena(vet,0,vet.length-1); 
        
        //******************** 
        for (i=0;i<vet.length;i++) 
            { 
              saida+=vet[i]+"\n"; 
               
            } 
        
        texto.setText(saida); 
        
        JOptionPane.showMessageDialog(null,texto,"ORDENAÇÂO COM QUICK SORT",JOptionPane.WARNING_MESSAGE); 
        
     }

Valeu Galera!!!

Olá Guto09,

Existe um método que faz a ordenação de objetos de qualquer classe que implemente a interface Comparable (como String), ou através de um Comparator. Esse método é o )]Arrays.sort:

String[] seuArray = ...; Arrays.sort(seuArray);

Só isso!

Até mais, :wink:

Guto, tenta entender o que eu fiz… peguei seu codigo e modifiquei, agora ele ordena qualquer coisa… se não entender algo, pergunta… se isso for um trabalho de facul, e o professor quer que use “arrays” ao inves de lista, a alteração esta basicamente na classe “A” (eh eu coloco qualquer nome para a classe quando estou fazendo testes hehe). Segue o código:

import java.util.ArrayList;
import java.util.List;

public class Teste
{
   private static void ordena(A a, int p, int u)
   {
      int i = p, f = u;
      int x = (int) (Math.random() * (u - p + 1)) + p;
      Comparable pivo = a.get(x);

      while (i <= f)
      {

         while (i < u && a.get(i).compareTo(pivo) < 0)
            i++;

         while (f > p && a.get(f).compareTo(pivo) > 0)
            f--;

         if (i <= f)
         {
            a.move(f, i);
            f--;
            i++;
         }
      }

      if (p < f) ordena(a, p, f);
      if (i < u) ordena(a, i, u);

   }

   public static void main(String args[])
   {
      String saida = "";
      A<String> vet = new A<String>();

      vet.add("estados unidos");
      vet.add("brasil");
      vet.add("japao");
      vet.add("alemanha");
      vet.add("italia");
      vet.add("argentina");
      vet.add("paraguai");
      vet.add("china");

      ordena(vet, 0, vet.size() - 1);

      // ********************
      for (int i = 0; i < vet.size(); i++)
      {
         saida += vet.get(i) + "\n";
      }
      System.out.println(saida);

   }
}

class A<E extends Comparable<E>>
{
   private List<E> l = new ArrayList<E>();

   public E get(int i)
   {
      return l.get(i);
   }

   public boolean add(E e)
   {
      return l.add(e);
   }

   public int size()
   {
      return l.size();
   }

   public void move(int from, int to)
   {
      E x = l.get(from);
      l.set(from, l.get(to));
      l.set(to, x);
   }

}