Ordenação Metodo Shell Sort

4 respostas
V

Pessoal tava tentando fazer funciona esse código de Ordenação fiz tudo certinho e quando rodo ele… ele pega e trava o pc e não faz nada… não aparece msg de erro onde estaria o erro alguem poderia me ajudar???

int[] vetor = { 100, 15, 65, 65, 76, 3, 4, 6, 8, 89 };
        
        int i , j , valor, salto = 1;
        
        
        salto = 3 * salto + 1;
        
        while(salto < vetor.length);
        salto = salto % 3;

        for ( i = salto; i < vetor.length; i++){
            valor = vetor[i];
            j = i - salto;
            
            while (j >= 0 && valor < vetor[j]){
            vetor [j + salto] = vetor[j];
            j = j - salto;
            }
            vetor [j + salto] = valor;
        }
        while ( salto > 1);

        for ( i = 0; i < vetor.length; i++) {



            System.out.print(vetor[i] + ", ");

            

            }
    }

4 Respostas

pmlm
while(salto < vetor.length);

Se entrar nesse while nunca mais sai…

L

Exemplo que eu fiz

public static void main(String args[]){
 *int[] a = new int[]{10,15,2,4,6,7,8,9,11,-3,-4,-10};
 *String[] b = new String[]{"a","A","B","-3","x","X","D","Cra","AB","3"};
 *java.util.Arrays.sort(a);
 *java.util.Arrays.sort(b);
 *for(int i=0;i<a.length;i++)
 *	System.out.println(a[i]);
 *System.out.println("-------------");
 *for(int j=0;j<b.length;j++)
 *	System.out.println(b[j]);
	}
}
BrunoBastosPJ

você colocou um ; depois do while… Como seu while não tem um bloco ({ } ) ele entende que o único código dentro dele é um ;, o que não causa em erro em Java, porém resulta em um loop infinito. :wink:

V

Pessoal vi meu código e resolvi meu problema…

ao inves de eu colocar meu while assim

while(salto < vetor.length);

eu inverti o sinal de menor para maior e funcionou…

while(salto > vetor.length);

valew…

Diga uma coisa tem como eu colocar um for dentro da minha estrutura pra ir me jogando um passo a passo de como ele vai ordenando os elementos ???

Criado 20 de agosto de 2010
Ultima resposta 20 de ago. de 2010
Respostas 4
Participantes 4