métodos de ordenação

    Ola galera , estou fazendo um trabalho sobre técnicas de ordenações, e o prof passou um modelo a ser seguido para a entrega, porém eu não entendi nada dele se vcs poderem me dar uma luz!
     Se poderem dar só uma comentada no código já ajuda muito,eu não consegui ver onde ele atribui o valor do vetor , a parte da implementação da logica da ordenação foi eu que fiz.

public class Bolha {

	public enum Ordem {CRESCENTE, DECRESCENTE};

	public Ordem ordem = Ordem.CRESCENTE; // valor padrão
	private int[] valores;

	private int trocas = 0;
	private int comparacoes = 0;
	
	private boolean ordenado;
	private boolean gerarEstatistica;

	public boolean isGerarEstatistica() {
		return gerarEstatistica;
	}

	public void setGerarEstatistica(boolean gerarEstatistica) {
		this.gerarEstatistica = gerarEstatistica;
	}

	public int[] getValores() {
		return valores;
	}

	public void setValores(int[] valores) {
		this.valores = valores;
	}

	public Ordem getOrdem() {
		return ordem;
	}

	public int getTrocas() {
		return trocas;
	}

	public int getComparacoes() {
		return comparacoes;
	}


	public Bolha() {

	}

	public Bolha(int[] valores) {
		this.valores = valores;
	}

	public Bolha(int[] valores, Ordem ordem) {
		this.valores = valores;
		this.ordem = ordem;
	}


	public void ordenar(){
		//--se já estiver ordenado não executa novamente o processo --
		if (ordenado){ 
			return;
		}
		
		switch(ordem){
			case CRESCENTE :
				if (isGerarEstatistica()){
					ordenarCrescenteContab();
				}
				else{
					ordenarCrescente();
				}
				break;
				
			case DECRESCENTE:
				if (isGerarEstatistica()){
					ordenarDecrescenteContab();
				}
				else{
					ordenarDecrescente();
				}
				break;
				
		};
	}
	
	public void ordenarCrescente(){
		
		int aux = 0;
		
		for (int i = 0 ;i < valores.length - 1;i++){
			
			boolean extroca = false;
			
			for (int j = 0 ;j < ( ( valores.length - 1 ) - i );j++){
				
				if ( valores[j] > valores[j + 1] ){
					
					aux = valores[j];
					valores[j] = valores[j + 1];
					valores[j + 1] = aux;
					
					extroca = true;
					
				}
				
			}
			
			if(!extroca){
				break;
			}
			
		}
		
		System.out.println("ordenarCrescente");
		for(int l : valores){
			
			System.out.print(valores+" ,");
			
		}
	}
	
	public void ordenarCrescenteContab(){
		System.out.println("ordenarCrescenteContab"); 		
	}

	public void ordenarDecrescente(){
		System.out.println("ordenarDecrescente");
	}
	
	public void ordenarDecrescenteContab(){
		System.out.println("ordenarDecrescenteContab");
	}

}

metodo principal



public class TesteBolha {


	public static void main(String[] args) {
		int [] vet = {9,8,7,6,5,4,3,2,1};

		Bolha bolha = new Bolha(vet, Bolha.Ordem.CRESCENTE);
		
		bolha.setGerarEstatistica(Boolean.FALSE);
		bolha.ordenar();
		
		bolha.setGerarEstatistica(Boolean.TRUE);
		bolha.ordenar();
		
		bolha = new Bolha(vet, Bolha.Ordem.DECRESCENTE);

		bolha.setGerarEstatistica(Boolean.FALSE);
		bolha.ordenar();
		
		bolha.setGerarEstatistica(Boolean.TRUE);
		bolha.ordenar();
		
	}

}

o vetor está sendo passado no construtor veja:

Fonte do construtor:

public Bolha(int[] valores, Ordem ordem) {  
        this.valores = valores;  
        this.ordem = ordem;  
    }  
 Bolha bolha = new Bolha(vet, Bolha.Ordem.CRESCENTE);  

Agora você tem que perguntar especificamente qual o ponto que não entendeu, já que você que fez a lógica do algoritmo como você disse, respondi somente esta pergunta, por que foi somente essa que ficou clara!, se quiser faça outras perguntas específicas citando as linhas onde você tem dúvida.

ribclauport , até ai blz , oque eu não esto intendendo é pq o vetor não assume os valores passados , pelo menos é isso que eu acho , pois o resultado que esta saindo pra ele é lixo de memoria:

ordenarCrescente
[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,[I@62f72617 ,

não consigo ver oque tem de errado

Sem entrar em detalhes, não é "lixo" de memória, e sim detales relacionas a "equals" e "hashcode", pois você estava imprimindo o vetor, e sendo assim o que estava saindo no console era o resultado do "equals" chamado no objeto vetor, que agora não vem ao caso, mas o que vem ao caso é a forma que seu "for" está implementado, pois você está mandando imprimir o vetor, e não o "conteúdo" do vetor, veja abaixo o método alterado( O laço estava mandando imprimir a variável errada!), e você mesmo vai ver onde errou, testei abaixo o metodo e a impressão está ocorrendo normalmente, se tiver outra dúvida, ou alguma dúvida em relação ao que foi feito e só perguntar,
Segue abaixo o método:

[code] public void ordenarCrescente(){

    int aux = 0;  
      
    for (int i = 0 ;i &lt; valores.length - 1;i++){  
          
        boolean extroca = false;  
          
        for (int j = 0 ;j &lt; ( ( valores.length - 1 ) - i );j++){  
              
            if ( valores[j] &gt; valores[j + 1] ){  
                  
                aux = valores[j];  
                valores[j] = valores[j + 1];  
                valores[j + 1] = aux;  
                  
                extroca = true;  
                  
            }  
              
        }  
          
        if(!extroca){  
            break;  
        }  
          
    }  
      
    System.out.println(&quot;ordenarCrescente&quot;);  
    int i = 0;
    System.out.print(&quot;[&quot;);  
    for(int l : valores){  
      
        if(valores.length-1 == i){
        	System.out.println(l+&quot;]&quot;);
        	return;
        }
        System.out.print(l+ &quot; ,&quot;);
        i++;
          
    }  
}  [/code]

ribclauport , obrigado achei oque tinha errado e concertei o código , na vdd não entendi bem pq não funcionou mas compreendi , ainda não estudei estas diferença.