Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fábio Nunes

Algoritmo de Ordenação

Recommended Posts

E aí galera do iMasters, tudo beleza? Mais uma vez peço um help a essa grande comunidade de experts!

 

Continuo um eterno iniciante em Java e tenho um trabalho da faculdade para fazer, onde o professor passa o trabalho sobre ordenação antes de explicar (e praticar) os algoritmos recursivos e iterativos. Preciso fazer um programa com interface gráfica no NetBeans que ordene uma lista desordenada de nomes inserida pelo próprio usuário em um campo do programa e mostre o resultado em outro campo do mesmo programa, além de mostrar o tempo de execução da ordenação em milisegundos. Deve ser escolhido antes um algoritmo de ordenação, com um do tipo recursivo e outro do tipo iterativo. Para isso, tinha escolhido o Bubble Sort e o Quick Sort, por serem mais simples.

 

Já montei a interface gráfica e cheguei a criar 2 classes separadas, uma para o Quick Sort e outra para o Bubble Sort. Aqui está o esboço da janela do programa a ser montado:

 

Ordenacao.jpg

 

A classe Bubble está montada assim:

 


package ordenacao;

public class Bubble {

   private static double tempoInicial;
   private static double tempoFinal;
   private static double tempoTotal;

   public static double getTempoInicial(){
       return tempoInicial;
   }

   public static void setTempoInicial(double aTempoInicial)
   {
       tempoInicial = aTempoInicial;
   }

   public static double getTempoFinal(){
       return tempoFinal;
   }

   public static void setTempoFinal(double aTempoFinal)
   {
       tempoFinal = aTempoFinal;
   }

   public static void bubbleSort (int [] entrada){

       boolean houveTroca = true;

       while (houveTroca) {
               houveTroca = false;
               for (int i = 0; i < (entrada.length)-1; i++){
                       if (entrada[i] > entrada[i+1]){
                               int variavelAuxiliar = entrada[i+1];
                               entrada[i+1] = entrada[i];
                               entrada[i] = variavelAuxiliar;
                               houveTroca = true;
                       }
               }
       }               
}

}

 

E a classe Quick está assim:

 


package ordenacao;

public class Quick {

   private static double tempoInicial;
   private static double tempoFinal;
   private static double tempoTotal;

   public static double getTempoInicial(){
       return tempoInicial;
   }

   public static void setTempoInicial(double aTempoInicial)
   {
       tempoInicial = aTempoInicial;
   }

   public static double getTempoFinal(){
       return tempoFinal;
   }

   public static void setTempoFinal(double aTempoFinal)
   {
       tempoFinal = aTempoFinal;
   }

   public static void quick_sort(String[] entrada, int ini, int fim) {
               int meio;

               if (ini < fim) {
                       meio = partition(entrada, ini, fim);
                       quick_sort(entrada, ini, meio);
                       quick_sort(entrada, meio + 1, fim);
               }
       }

       public static int partition(String[] entrada, int ini, int fim) {
               int topo, i;
               String pivo;
               pivo = entrada[ini];
               topo = ini;

               for (i = ini + 1; i <= fim; i++) {
                       if (entrada[i].compareTo(pivo) < 0) {
                               entrada[topo] = entrada[i];
                               entrada[i] = entrada[topo + 1];
                               topo++; 
                       }
               }
               entrada[topo] = pivo;
               return topo;
       }
}

 

 

Minhas maiores dificuldades são:

 

- Fazer o resultado correto aparecer no campo "Lista Ordenada";

- Realizar a contagem da execução da ordenação;

 

Se alguém puder dar uma luz de como devo fazer ou tiver algum algoritmo já pronto que eu possa adaptar, será de grande ajuda.

 

Desde já, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro vamos à implementação dos algoritmos de ordenação.

Buble sort: http://rafaelsakurai.blogspot.com.br/2008/06/bubble-sort-em-java.html

Quick sort: http://www.roseindia.net/java/beginners/arrayexamples/QuickSort.shtml

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.