segunda-feira, 22 de maio de 2017

#2: Desafios de Lógica: Ordenação de nomes

Olá novamente, continuando com a série de Estrutura de Dados, hoje vou falar sobre ordenação.

Problema: Precisa-se que ordene um array de 20 nomes em ordem alfabética.

Resolução:
 Primeiro temos que criar um array de 20 posições para
resolução do problema:

 String nomes[] = new String [20];

Após isso, vamos solicitar ao usuário que informe os 20 nomes.
Como já expliquei essa parte de solicitar ao usuário utilizando a classe Scanner,  não vou entrar em mais detalhes nela. (Caso você queira entender um pouco melhor,  tem no meu post sobre Conversão de minutos para horas e minutos  (https://goo.gl/nQ0QEX)

Scanner sc = new Scanner(System.in);
for(int i=0;i<nomes.length;i++){
   System.out.println("Digite o nome");
   nomes[i] = sc.next();
}
//Somente para mostrar, que foi salvo os nomes
for(String valores:nomes){
  System.out.println(valores);
}

//Agora, independente da ordem que o usuário informou precisamos ordenar,
//e utilizaremos o algoritmo BubbleSort (ou conhecido também como:  Algoritmo Bolha)

* for (int i = 0; i < nomes.length - 1; i++) 
                for (int j = i + 1; j < nomes.length; j++) 
                    if (nomes[i].compareTo(nomes[j]) > 0) { 
                        String temporario = nomes[i]; 
                        nomes[i] = nomes[j]; 
                        nomes[j] = temporario; 
                    }

for(String nomesOrdenados:nome){
     System.out.println(nomesOrdenados);
}

* O algoritmo bolha, irá verificar de dois em dois se os elementos são maiores  ou menores entre eles, caso o primeiro elemento seja maior que o segundo  (o método compareTo irá retornar um número positivo (maior que 0(zero))).

Para a comparação entre os dois elementos, eu utilizo dois for's encadeados,  sendo que o segundo, irá iteirar + 1 com o índice do primeiro for, para que  consiga ler o próximo elemento.

nomes.lenght-1 - É para que o índice da variável j não passe do maior número  do array, e não lance uma exceção ArrayIndexOutOfBoundsException.

Assim independente da ordem que o usuário for passar os nomes, o algoritmo irá  verificar caractere por caractere e ordenando de forma alfabética.

Este código e outros estão disponíveis no meu github, caso queira analisar, basta clicar no link abaixo:

Projeto Ordenação - Bolha

Até + ;)
devhiranneri.eti.br

Nenhum comentário:

Postar um comentário