Por algum detalhe meu margeSort tá errado. Ele ordena, e mostra que está ordenando correto, mas tem hora de exibir exibe errado;
package margeS;
public class Principal {
public static void main(String[] args) {
Nota[] notasDoMauricio = {
new Nota("mariana", 5),
new Nota("andre", 4),
new Nota("paulo", 9),
new Nota("carlos", 8.5)
};
Nota[] notasDoAlberto = {
new Nota("jonas", 3),
new Nota("juliana", 6.7),
new Nota("guilherme", 7),
new Nota("lucia", 9.3),
new Nota("ana", 10)
};
Nota[] rank = margeSort(notasDoMauricio, notasDoAlberto);
for(int i=0; i<rank.length;i++){
System.out.println(rank[i].getNome()+": "+rank[i].getValor());
};
}
public static Nota[] margeSort(Nota[] notasDoMauricio, Nota[] notasDoAlberto){
int total=notasDoMauricio.length+notasDoAlberto.length;
Nota[] resultado= new Nota[total];
int atual=0;
int atualDoMauricio=0;
int atualDoAlberto=0;
while(atualDoMauricio<notasDoMauricio.length && atualDoAlberto<notasDoAlberto.length){
Nota nota1 = notasDoMauricio[atualDoMauricio];
Nota nota2 = notasDoAlberto[atualDoAlberto];
System.out.println("Estou comparando "+ nota1.getNome()+": "+ nota1.getValor()+ " com "+nota2.getNome()+": "+ nota2.getValor());
if(nota1.getValor() <= nota2.getValor()){
resultado[atual]=nota1;
atualDoMauricio++;
atual++;
}else{
resultado[atual]= nota2;
atualDoAlberto++;
atual++;
}
}
while(atualDoAlberto<notasDoAlberto.length){
resultado[atual]=notasDoAlberto[atualDoAlberto];
atual++;
atualDoAlberto++;
}
while(atualDoMauricio<notasDoMauricio.length){
resultado[atual]=notasDoMauricio[atualDoMauricio];
atual++;
atualDoMauricio++;
}
return resultado;
}
}
resultado:
Estou comparando mariana: 5.0 com jonas: 3.0 Estou comparando mariana: 5.0 com juliana: 6.7 Estou comparando andre: 4.0 com juliana: 6.7 Estou comparando paulo: 9.0 com juliana: 6.7 Estou comparando paulo: 9.0 com guilherme: 7.0 Estou comparando paulo: 9.0 com lucia: 9.3 Estou comparando carlos: 8.5 com lucia: 9.3 jonas: 3.0 mariana: 5.0 andre: 4.0 juliana: 6.7 guilherme: 7.0 paulo: 9.0 carlos: 8.5 lucia: 9.3 ana: 10.0
Veja que ele está encaixando sempre a menor nota. O algoritmo me parece igual ao da aula, mas na exibição da problema.