[Resolvido]Bubble Sort

4 respostas
javahunter
Pessoal esse código funciona 100%
public class BubbleSort {
	public static void main(String args[]) {
		
		int x[] = {45,5,15,35,25};
		
		for(int i = 0; i < x.length; i++){
		
			for(int j = 0; j < x.length; j++){
		
				if(x[i] < x[j]){
					int aux = x[j];
					x[j] = x[i];
					x[i] = aux;
				}
			}
		}
		for(int i = 0; i < x.length; i++){
			System.out.println(x[i]);
		}
	}
}
A saída é: 5 15 25 35 45 mas quando faço uma troca no [size=18]if[/size] o resultado é totalmente diferente
if(x[i] < x[j]){
	int aux = x[j];
	x[i] = aux;
	x[j] = x[i];
}
A saída é: 45 45 45 45 45

Porque acontece isso?

[]s

4 Respostas

di.magdaleno

Faça um teste de mesa desse código.

O resultado deixa claro que a lógica do segundo bloco de código está incorreta:

if(x[i] < x[j]){ int aux = x[j]; // Atribui o valor de x[j] para uma variável auxiliar x[i] = aux; // Atribui o valor da variavel auxiliar, ou seja, x[j] para x[i]. Como o valor de x[i] não foi salvo em outra variável antes dessa operação ele é perdido x[j] = x[i]; // Essa atribuição é inútil, pois, antes dela, x[i] é igual a aux que é igual a x[j], ou seja, x[j] já é igual a x[i] }

davidbuzatto

Não vi seu algoritmo com calma, mas olhando pelo seu if está claro porque não funciona. Preste atenção no que você está fazendo dentro do if.

javahunter

Valew di.magdaleno

Saquei a logica agora

di.magdaleno

javahunter:
Valew di.magdaleno

Saquei a logica agora


Magina!

Se tiver mais alguma duvida posta ai!

Criado 6 de abril de 2013
Ultima resposta 6 de abr. de 2013
Respostas 4
Participantes 3