0
respostas

Método ordenar string não funciona

Ao substituir o método ordena da string o método intercala para de funcionar

package br.com.alura.notas;

public class TestaIntercalaOrdenacaoAoIntercalarOrdemAlfabetica {

    public static void main(String[] args) {
        Nota[] notas = { 
                new Nota("andre", 4), 
                new Nota("mariana", 5), 
                new Nota("carlos", 8.5), 
                new Nota("paulo", 9),
                new Nota("ana", 10),
                new Nota("jonas", 3), 
                new Nota("juliana", 6.7), 
                new Nota("guilherme", 7), 
                new Nota("lucia", 9.3)
                };

        ordena(notas, 0, notas.length);
        for (Nota nota : notas) {
            System.out.println(nota.getAluno() + " " + nota.getValor());
        }
    }

    private static void ordena(String[] nomes, int inicio, int termino) {

          int quantidade = termino - inicio;
          if(quantidade > 1) {
            int meio = (termino + inicio) / 2;
            ordena(nomes, inicio, meio);
            ordena(nomes, meio, termino);
            intercala(nomes, inicio, meio, termino);
          }
        }
    }

    private static void intercala(Nota[] notas, int inicial, int miolo, int termino) {
        Nota[] resultado = new Nota[termino - inicial];
        int atual = 0;
        int atual1 = inicial;
        int atual2 = miolo;

        while (atual1 < miolo && atual2 < termino) {
            Nota nota1 = notas[atual1];
            Nota nota2 = notas[atual2];

            if (nota1.getValor() < nota2.getValor()) {
                resultado[atual] = nota1;
                atual1++;
            } else {
                resultado[atual] = nota2;
                atual2++;
            }
            atual++;
        }

        while (atual1 < miolo) {
            resultado[atual] = notas[atual1];
            atual1++;
            atual++;
        }

        while (atual2 < termino) {
            resultado[atual] = notas[atual2];
            atual2++;
            atual++;
        }

        for(int i = 0; i < atual ; i++) {
            notas[inicial + i] = resultado[i];
        }
    }
}