O código abaixo não está classificando os dois últimos valores da matriz. Alguma luz
Muito obrigado
Abs
packageaulas;importjavax.swing.JOptionPane;classvertor_crescente5{publicstaticvoidmain(Stringargs[]){intA[]={5,3,9,6,4};intaux;Stringmensagem=" ";mensagem=mensagem+"O valor de A[0] = "+A[0];mensagem=mensagem+"\nO valor de A[1] = "+A[1];mensagem=mensagem+"\nO valor de A[2] = "+A[2];mensagem=mensagem+"\nO valor de A[3] = "+A[3];mensagem=mensagem+"\nO valor de A[4] = "+A[4];
for(inti=0;i<=3;i++){if(A[i]>A[i+1]){aux=A[i];A[i]=A[i+1];A[i+1]=aux;};}mensagem=mensagem+"\n\nO valor ordenado de A[0] ="+A[0];mensagem=mensagem+"\nO valor ordenado de A[1] ="+A[1];mensagem=mensagem+"\nO valor ordenado de A[2] ="+A[2];mensagem=mensagem+"\nO valor ordenado de A[3] ="+A[3];mensagem=mensagem+"\nO valor ordenado de A[4] ="+A[4];JOptionPane.showMessageDialog(null,mensagem);}
Entendi, use Listas: são bem mais flexíveis que arrays. Aqui o seu mesmo código, mas usando listas:
packagewar;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjavax.swing.JOptionPane;publicclassInicio{publicstaticvoidmain(Stringargs[]){List<Integer>c=newArrayList<Integer>();c.add(5);c.add(3);c.add(9);c.add(6);c.add(4);Stringmensagem=" ";mensagem=mensagem+"O valor de A[0] = "+c.get(0);mensagem=mensagem+"\nO valor de A[1] = "+c.get(1);mensagem=mensagem+"\nO valor de A[2] = "+c.get(2);mensagem=mensagem+"\nO valor de A[3] = "+c.get(3);mensagem=mensagem+"\nO valor de A[4] = "+c.get(4);Collections.sort(c);// Aqui ordenamos do menor para o maior, em uma só linha :Dmensagem=mensagem+"\n\nO valor ordenado de A[0] ="+c.get(0);mensagem=mensagem+"\nO valor ordenado de A[1] ="+c.get(1);mensagem=mensagem+"\nO valor ordenado de A[2] ="+c.get(2);mensagem=mensagem+"\nO valor ordenado de A[3] ="+c.get(3);mensagem=mensagem+"\nO valor ordenado de A[4] ="+c.get(4);JOptionPane.showMessageDialog(null,mensagem);}}
H
hashtag
Bom dia War,
Muito obrigado pela dica. Estou fazendo um curso e os primeiros exercícios são básicos. Acho q ele ainda vai chegar em listas,
gostei
Muito obrigado
Abs
Rodrigo_Sasaki
Infelizmente listas e métodos prontos não vão ajudar ninguém a exercitar o cérebro
É interessante querer desenvolver um algoritmo de ordenação.
Obviamente ninguém vai usar isso em uma situação de trabalho, a não ser que você seja realmente muito bom e implemente uma ordenação melhor do que as já prontas, e ainda assim, se for cabível.
Agora pra motivos de estudo, usar estruturas primitivas e forçar o cérebro a pensar em como implementar uma ordenação, é um ótimo exercício.
Seu algoritmo de ordenação me parece metade de um Bubble Sort. Acontece que você só percorre a lista uma vez. No Bubble Sort a lista é percorrida até que não haja mais nada a ser alterado, ou seja, quando percorrer a lista toda e nenhum elemento for trocado, aí você para de ordenar.
War_Paz
Rodrigo, não sei se foi aqui mesmo no GUJ ou em algum outro lugar que que vi isso mas acho interessante o dizer: “Não reinvente a roda”
Realmente concordo que é bom pra exercitar o cérebro, mas por que não utilizar, se já está pronto?
Rodrigo_Sasaki
War Paz:
Rodrigo, não sei se foi aqui mesmo no GUJ ou em algum outro lugar que que vi isso mas acho interessante o dizer: “Não reinvente a roda”
Realmente concordo que é bom pra exercitar o cérebro, mas por que não utilizar, se já está pronto? ;)
Funcionar funciona, disso não há dúvida. E no trabalho eu não escrevo algoritmos que já estão prontos. Mas ajudam muito na hora de aprender estruturas de dados, e aprender a como pensar nelas.
O foco é o desenvolvimento do raciocínio lógico, que pra profissionais da nossa área, é essencial
Não se ensina matemática a alunos da primeira série dando uma calculadora pra eles