BubbleSort (Iniciante)

Pessoal estou tentando fazer um Sort para dois vetor.
Vetor de Nome e de Altura.
Preciso colocar em ordem alfabetica pelo Nome usando o BubbleSort.
Do jeito que está ele está fazendo pela altura.

Segue o código que estou usando.

                    String AuxNome[] = NomeJogador.clone();
                    String AuxN;
                    for (int i = 0; i < AlturaJogador.length; i++) {
                        for (int j = 0; j < AlturaJogador.length - 1; j++) {
                            if (AlturaJogador[j] > AlturaJogador[j + 1]) {
                                Aux = AlturaJogador[j];
                                AlturaJogador[j] = AlturaJogador[j + 1];
                                AlturaJogador[j + 1] = Aux;
                                AuxN = AuxNome[j];
                                AuxNome[j] = AuxNome[j + 1];
                                AuxNome[j + 1] = AuxN;
                            }
                        }
                    }
                    System.out.println(Arrays.asList(AuxNome));
                    System.out.println(Arrays.toString(AlturaJogador));

Para verificar se uma string é posterior à outra (alfabeticamente falando), você precisa usar o método compareTo da classe Sttring. Troque a linha:

if (AlturaJogador[j] > AlturaJogador[j + 1]) {

por

if (AuxNome[j].compareTo(AuxNome[j + 1]) > 0) {

Abraço.

1 curtida

Muito Obrigado!
Não tinha percebido essa função dentro do String.

Para entendimento poderia me explicar qual a função do " >0 ", o que ele faz neste teste logico?

Se você olhar a documentação do método compareTo, vai descobrir que ao chamar objeto1.compareTo(objeto2) ele vai retornar:

  • Zero (numero == 0) quando objeto1 for igual à objeto2;
  • Um número positivo (numero > 0) quando objeto1 for maior que objeto2;
  • Um número negativo (numero < 0) quando objeto1 for menor que objeto2;
1 curtida

Obrigado pela explicação!

1 curtida