Ordenar array de objectos usando o merge sort

0 respostas
YoungT

peco ajuda para ordenar um array de objectos usando o merge sort, eu axo que tou com problemas na parte de passagem de dados por parametro, por favor ajudem, eis as mnhas classes :

public class Universidade {
    private int cod;
    private String nome;
    
   	public Universidade() {}

	public Universidade(int cod, String nome) {
		this.cod = cod;
		this.nome = nome;
		
		raiz = null;
		dir = null;
	}
	public int getCod() {
		return cod;
	}
	public void setCod(int cod) {
		this.cod = cod;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
    
    
}


public class Tabela {
	int last;	
	Universidade[]univ=new Universidade[10];
	
	public Tabela(){
		this.last=-1;
		univ=new Universidade[10];
		
	}
	public boolean isEmpty(){
	   if(last==-1)	
	     return true;
	     return false;
	}
	public boolean isFull(){
		if(last==univ.length-1)
		return true;
		return false;
	}
	//metodo que insere uma universidade sequencialmente
	public void InsertUniv(Universidade a){
		if(!isFull()){
		   last++;
		   univ[last]=a;
		}
		else
			System.out.println("Tabela Cheia");
	}
	public void viewUniversidades(){
		for (int i = 0; i < last+1; i++) {
			System.out.println((i+1)+" - "+univ[i].getNome());
		}		
	}
        public void mergeSort()          
    {                              
    Universidade[]u = new Universidade[this.univ.length];
    recMergeSort(u, 0, this.last);
    }
	private void recMergeSort(Universidade[]u, int min, int max)
    {
      if(min == max)            
         return;                         
      else
      {                                    
        int mid = (min+max) / 2;
         
        recMergeSort(u, min, mid);
         
        recMergeSort(u, mid+1, max);
         
        merge(u, min, mid+1, max);
      } 
    }  
     
    private void merge(Universidade[]u, int baixo,int alto, int max)
    {
       int j = 0;                             
       int lowerBound = baixo;
       int mid = alto-1;
       int n = max-lowerBound+1;   
       while(baixo <= mid && alto <= max)
           if( univ[baixo].getCod() < univ[alto].getCod())
        	   
               u[j++] = u[baixo++];
           else
               u[j++] = u[alto++];

       while(baixo <= mid)
               u[j++] = u[baixo++];

       while(alto <= max)
           u[j++] = u[alto++];

        for(j=0; j<n; j++)
           this.univ[lowerBound+j] = u[j];
 }
}
Criado 11 de junho de 2009
Respostas 0
Participantes 1