Duvidas como ordenar uma lista de nomes em ordem alfabética
7 respostas
S
sergiorj
Gente, como eu faço para ordenar uma lista de nomes inseridos pelo usuario em ordem alfabética?
Quando vi a proposta do exercicio achei bem facil, pois logo pensei no metodo Array.sort() e até bubblesort, porém quando fui apresentar ao professor ele me disse que
eu nao poderia usar Array e nem metodos que nao seja criados por mim mesmo, fiquei um pouco nervoso pq ele só me disse isso faltando 2 dias para o prazo final de entrega do exercicio, e nao consegui bolar nada até agora, alguem poderia me dar uma força?
Já que o professor não quer que você utilize nenhum método para auxiliar na tarefa, adicione todos os nomes no banco e depois faça um SELECT com ORDER BY e mostre o resultado. Caso contrário, vai dar um pouco de trabalho.
thiago_dias
Olha cara, Já fiz um algoritmo deste tipo para a faculdade.
O objetivo era ordenar um array de String comparando apenas as duas primeiras letras dos nomes.
Sei que o algoritmo é limitado(POG total), porém pode te ajudar a iniciar algo mais elaborado.
classTestOrdenacao{publicstaticvoidmain(String[]args){//Testando método de ordenaçãoString[]nomes=ordenaArray(newString[]{"Fulano","Sicrano","Beltrano","Barabara","Samy","Fabiana"});//Imprime os nomesfor(inti=0;i<nomes.length;i++){System.out.println(nomes[i]);}}//Método de ordenaçãopublicstaticString[]ordenaArray(String[]arrayNomes){// variável para auxiliar na troca dos nomesStringaux="";for(inti=0;i<arrayNomes.length;i++){for(intj=0;j<arrayNomes.length;j++){Stringnome1=arrayNomes[i];//string que está no índice i do array.Stringnome2=arrayNomes[j];//string que está no índice j do array.//A primeira letra do nome2 é maior do que a primeira letra do nome1 ?if(nome2.charAt(0)>nome1.charAt(0)){//utiliza a variável auxiliar e trocar os nomes de posição no array.aux=nome1;arrayNomes[i]=nome2;arrayNomes[j]=aux;//A primeira letra do nome2 é igual a nome1?}elseif(nome2.charAt(0)==nome1.charAt(0)){//Compara a segunda letraif(nome2.charAt(1)>nome1.charAt(1)){aux=nome1;arrayNomes[i]=nome2;arrayNomes[j]=aux;}}}}returnarrayNomes;}}
Aceito críticas quanto ao código postado :XD:
Falou
JuniorMaia
onde que você não pode usar array? Apenas na ordenação?
ViniGodoy
Sem usar arrays fica impossível. Acho que ele quis dizer que você não pode usar o Arrays.sort, pois aí vc não implementou a ordenação.
pode usar uma lista duplamente encadeada com insertion sort.
rmendes08
Basta você implementar um algoritmo de ordenação qualquer. A única coisa que muda com relação a ordenação de inteiros é a comparação entre String’s. Se você não puder usar o método compareTo() da classe String você pode implementar um por sua conta.