o gente eu to com uma dificuldade tenho que fazer um exercicio o enunciado eh esse
Primeiro tem que fazer uma classe chamada aluno que seria essa aqui q eu fiz
public class Aluno {
private String nome;
private int matricula;
private int nunchamada;
public Aluno(String nome,int matricula, int nunchamada){
this.nome=nome;
this.matricula=matricula;
this.nunchamada=nunchamada;
}
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome=nome;
}
public int getMatricula(){
return matricula;
}
public void setMatricula(int matricula){
this.matricula=matricula;}
public int getnunchamda(){
return nunchamada;
}
public void setNunChamda(int nunchamada){
this.nunchamada=nunchamada;
}
}
depois
Crie classe que tenha um método que implemente o Merge-Sort,
para ordenar um vetor de Alunos de acordo com seu nome, caso
exista mais de um aluno com o mesmo nome, então deve ordenálos
pela matricula.
a classe merge sort seria essa aqui
public class MergeSort {
public int[] vetor;
/*
* Método recursivo que divide o vetor em dois e depois os mescla e ordena
*/
public void merge(int inicio, int fim) {
if (inicio < fim) {
int meio = (inicio + fim) / 2;
merge(inicio, meio);
merge(meio + 1, fim);
mesclar(inicio, meio, fim);
}
}
/*
* Ordena dois trechos ordenados e adjacente de vetores e ordena-os
* conjuntamente
*/
public void mesclar(int inicio, int meio, int fim) {
int tamanho = fim - inicio + 1;
/*
* Inicialização de um vetor temporario para auxiliar na ordenação O
* vetor temporário é uma cópia do trecho que será ordenado
*/
int[] temp = new int[tamanho];
for (int posicao = 0; posicao < tamanho; posicao++) {
temp[posicao] = vetor[inicio + posicao];
}
/*
* Laço para ordenação do vetor, utilizando o vetor temporário, usando
* índices i e j para cada trecho de vetor da mesclagem
*/
int i = 0;
int j = meio - inicio + 1;
//A depender das condições, recebe um elemento de um trecho ou outro
for (int posicao = 0; posicao < tamanho; posicao++) {
vetor[inicio + posicao] =
(j <= tamanho - 1) ?
((i <= meio - inicio) ?
(temp[i] < temp[j]) ?
temp[i++]
: temp[j++]
: temp[j++])
: temp[i++];
}
}
}
acho q esta errado essa classe mergesort
e fiz minha classe main para poder fazer teste
ublic class Main {
public static void main(String[] args) {
// Aluno alu = new Aluno();
Aluno rafael = new Aluno("Rafael",100000,13);
Aluno sakurai = new Aluno("Saurai",10023,20);
Aluno cristiano = new Aluno("Cristiano",101010,13);
Aluno rafael2 = new Aluno("Rafael",100011,10);
Aluno[] alunos = {rafael,sakurai,cristiano,rafael2};
MergeSort merg = new MergeSort();
merg.merge(inicio, fim);//ta dando eero isso
}
}
depois de ordenado tem q aparecer assim
? Cristiano ? 101010 ? 3
? Rafael ? 100000 ? 13
? Rafael ? 100011 ? 10
? Sakurai ? 100023 ? 20
mais ta dando erro
sera que alguem poderia me ajudar grata