Pessoal esse código funciona 100%
[code]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]);
}
}
}[/code] 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
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]
}
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.
[quote=javahunter]Valew di.magdaleno
Saquei a logica agora[/quote]
Magina!
Se tiver mais alguma duvida posta ai!