/*Primeiro criei uma classe Nome */
public class Nome {
private String nome;
public Nome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}
/*Depois a classe main */
package teste;
import br.com.alura.notas.Nome;
public class IntercalaNome {
public static void main(String[] args) {
Nome[] nomes = {
new Nome("Andressa"),
new Nome("Camila"),
new Nome("Enzo"),
new Nome("Fernando"),
new Nome("Maria"),
new Nome("Alberto"),
new Nome("Jonas"),
new Nome("Junior"),
new Nome("Paloma"),
new Nome("Paulo")
};
Nome[] rank = intercala(nomes,0,5,nomes.length);
for(Nome nome: rank) {
System.out.println(nome.getNome());
}
}
private static Nome[] intercala(Nome[] nomes, int inicial, int miolo, int termino) {
Nome[] resultado = new Nome[termino - inicial];
int atual = 0;
int atual1 = inicial;
int atual2 = termino;
while(atual1 < miolo && atual2 < termino) {
Nome nome1 = nomes[atual1];
Nome nome2 = nomes[atual2];
if(nome1.getNome().compareTo(nome2.getNome()) < 0 ) {
resultado[atual] = nome1;
atual1++;
} else {
resultado[atual] = nome2;
atual2++;
}
atual++;
}
while(atual1 < miolo) {
resultado[atual++] = nomes[atual1++];
}
while(atual < termino) {
resultado[atual++] = nomes[atual2++];
}
for (int contador = 0; contador < atual; contador++) {
nomes[inicial + contador] = resultado[contador];
}
return nomes;
}
}