Metodo de inserção RESOLVIDO

10 respostas
van_bommel
/*

1A - elaborar um prog , capaz de receber 5 nºs inteiros via teclado , e inseri-los 
em um vetor . Após isto , ordenar o vetor utilizando o metodo de inserção e apresentar 
o vetor ordenado em tela.

Insertion Sort

 */
   import javax.swing.*;

    public class Exer1 {
   
       public static void insertionSort(int[] array) {
      // variavel temp
         int elementoAtual;
      
      // loop ate o ultimo elemento
         for (int i = 0; i < array.length; i++) {
         // guarda o valor
           elementoAtual = array[i];
         // inicializa a variavel localização
            int indiceAtual = i;
            
            while (indiceAtual > 0 && array[indiceAtual - 1] > elementoAtual) {
               array[indiceAtual] = array[indiceAtual - 1];
               indiceAtual--;
            }
            array[indiceAtual] = elementoAtual;
            imprimir(array);
         }
      }
       public static void imprimir ( int [] array ){
       
         for ( int i = 0 ; i < array.length ; i++ ) {
            System.out.print ( " " + array[i]);
            
         }
         System.out.print ( "\n");
         
         
        
         
      	
      }
         
       
   
   
         
      
   
       public static void main(String args[]) {
      
         String aux = " ";
         int array[] = new int[5];
      
         for (int i = 0; i < array.length; i++) {
            aux = JOptionPane.showInputDialog(" Insira o  " + (i + 1)
               + "º elemento");
            array[i] = Integer.parseInt(aux);
         
         
         }
      
         System.out.println ( "Elemento não ordenados  ");
         imprimir(array);
         
         System.out.println ("Ordenando por inserção " );
         insertionSort(array);
         System.out.println ( " Elementos ordenados ");
         imprimir(array); 
      
      }
   
   }


----------------------------------inserção : 

começando do ultimo elemento ordeno , ai é q ta o meu problema não estou conseguindo onde estou errando na logica ?


/*
3A - Alterar o metodo Inserção do exer 2A de forma que ele ordene crescentemente , 
 do maior   para o menor elemento . 
 */
 
 
   import javax.swing.*;

    public class Exer3A {
   
       public static void insertionSort(int[] array) {
      // variavel temp
         int elementoAtual;
      
      // loop ate o ultimo elemento
         for (int i = array.length - 1 ; i > 0 ; i--) {
         // guarda o valor
           elementoAtual = array[i];
         // inicializa a variavel localização
            int indiceAtual = i;
            
            while (indiceAtual < array.length - 1 && array[indiceAtual - 1] < elementoAtual) {
               array[indiceAtual] = array[indiceAtual - 1];
               indiceAtual++;
            }
            array[indiceAtual] = elementoAtual;
            imprimir(array);
         }
      }
       public static void imprimir ( int [] array ){
       
         for ( int i = 0 ; i < array.length  ; i++ ) {
            System.out.print ( " " + array[i]);
            
         }
         System.out.print ( "\n");
         
         
        
         
      	
      }
         
       
   
   
         
      
   
       public static void main(String args[]) {
      
         String aux = " ";
         int array[] = new int[5];
      
         for (int i = 0; i < array.length; i++) {
            aux = JOptionPane.showInputDialog(" Insira o  " + (i + 1)
               + "º elemento");
            array[i] = Integer.parseInt(aux);
         
         
         }
      
         System.out.println ( "Elemento não ordenados  ");
         imprimir(array);
         
         System.out.println ("Ordenando por inserção " );
         insertionSort(array);
         System.out.println ( " Elementos ordenados ");
         imprimir(array); 
      
      }
   
   }

10 Respostas

pedroroxd

Cara
Qual é sua dúvida?
Não é só postar o código que agente vai milagrosamente entender onde está dando errado -.-

rogelgarcia

Hahhahahahah

Acho que o erro tá aqui:

array[indiceAtual] = array[indiceAtual - 1];
van_bommel

pedroroxd …

ja falei mano… a porra num funciona é na ordenação… --"

ta com preguii então num respondi o topico.

pedroroxd

van bommel:
pedroroxd …

ja falei mano… a porra num funciona é na ordenação… --"

ta com preguii então num respondi o topico.


Cara
deixa de ser burro… Agora que vi…
Vc postou a dúvida dentro da tag code
Ae não dá né?

Porque o que  fica dentro da tag code tem que ser o código -.-

Quem olha o tópico acha que só tem código…
Ps: foi vc que começou falando palavrão =X

van_bommel

ta bom bobao …
aqui é um forum ;de ajuda .
num vo ficar brigando tenho mais oq fazer.

rogelgarcia

Conflito nível 5 esse… de acordo com o tópico…

http://www.guj.com.br/posts/list/201395.java

pedroroxd

rogelgarcia:
Conflito nível 5 esse… de acordo com o tópico…

http://www.guj.com.br/posts/list/201395.java


kkkk
se pah não…
axo que ta no 4

van_bommel
public static void insertionSort(int[] array) {
      // variavel temp
         int elementoAtual;
      
      // loop ate o ultimo elemento
         for (int i = array.length - 1 ; i >= 0 ; i--) {
         // guarda o valor
            elementoAtual = array[i];
         // inicializa a variavel localização
            int indiceAtual = i;
            
            while (indiceAtual < array.length - 1  && elementoAtual > array[indiceAtual + 1]) {
               array[indiceAtual] = array[indiceAtual + 1];
               indiceAtual++;
               
            }
             
            array[indiceAtual] = elementoAtual;
         
            imprimir(array);
         }
      }

Consegui sozinho..

pedroroxd

parabéns…
Vá ao primeiro tópico, clique editar, e acrescente [RESOLVIDO]
E da proxima vez não seja grosso com quem quer ajudar, porque ae eles vão tentar =)

van_bommel

so retribui, a sua ironia…
mas se ta ligado q as vezes estamos de cabeça quente .

Criado 20 de março de 2010
Ultima resposta 21 de mar. de 2010
Respostas 10
Participantes 3