Dúvidas em relação a array

Pessoal,

Estou iniciando em Java e estou com uma dúvida em relação a um exemplo do livro Java Como Programar, que mostra como classificar valores de um array.
O exemplo usa um “for” que serve para controlar o número de passagens, mas o próximo “for” que controla o número de comparações, já percorre todas as posições do array ordenando-o. Achei estranho e fiz um teste inibindo o primeiro “for”… e o programa funcionou corretamente. Minha dúvida é a seguinte : Esse primeiro “for” tem alguma outra função que eu não esteja entendendo ?
Segue abaixo o programa para facilitar o entendimento.

[code]import java.awt.;
import javax.swing.
;

public class BubbleSort extends JApplet {

public void init()
{
    JTextArea AreaSaida = new JTextArea();
    Container container = getContentPane();
    container.add(AreaSaida);
    
    int array[] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
    
    String saida = "Números na ordem original\n";
    
    //Acrescenta valores originais do array ao String saida
    for (int cont = 0; cont < array.length; cont++)
        saida += " " + array[cont];
    
    Ordena(array);   //ordena o array
    
    saida += "\n\nNúmeros em ordem crescente\n";
    
    //Acrescenta valores ordenados do array ao String saida
    for (int cont = 0; cont < array.length; cont++)
        saida += " " + array[cont];
    
    AreaSaida.setText(saida);
    
}


//Método que ordena os elementos do array
public void Ordena (int array2[])
{
    //laço para controlar o número de passagens
    [b]for (int pass = 1; pass < array2.length; pass++) {[/b]            
        //laço para controlar o número de comparações
        for (int element = 0; element < array2.length - 1; element++) {
            
            //compara elementos adjacentes e os troca de lugar se
            //o primeiro elemento for maior que o segundo elemento
            if (array2[element] > array2[element + 1] )
                troca(array2, element, element + 1);
        } //fim do laço p/ controlar comparações
        
    [b]} //fim do laço para controlar passagens[/b]        
} //fim do método Ordena


//Método que troca dois elementos de um array
public void troca(int array3[], int num1, int num2)
{
    int hold;  //área de armazenamento temporário para troca
    
    hold = array3[num1];
    array3[num1] = array3[num2];
    array3[num2] = hold;
}

} //Fim da Classe BubbleSort
[/code]

Obrigada,
Márcia.

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos para ficarem mais legíveis - Reifel[/color][/size] :joia:

Oi Marcia,

Esse primeiro for:

for (int pass = 1; pass < array2.length; pass++) {

deve estar a mais nesse codigo, porque ele está interando varias vezes o mesmo array e não está marcando o numero de passagens, tanto que o valor dele (pass) não é usado para mais nada a não ser interar o for. Seria como se cada vez que ele faz um loop no for, pede mais uma vez para ordernar o array no segundo for.

Olá, acho que o metodo correto seria esse…

public void ordena(int[] array){
 //aqui ela pega cada elemento do array 
 for (int i = 0; i < array.length; i++){
   /*aqui ele compara esse elemento com todos os outros de tras pra frente, pra saber se tem algum menor que ele...*/
  for (int j = array.length - 1; j > i; j--){
   if (array[j] < array[i]) troca(array, i, j);
  }
 }
}

:idea:

pelo que parece isso é só um exercicio mesmo… se for tudo bem, se não tem uma forma mais facil de fazer isso… usa a classe Arrays, que tem um metodo sort() que ordena pra você…


   int[] array = {1, 5, 3, 2, 6 , 10};

   java.util.Arrays.sort(array);

É…esse é um exercício do livro “Java como Programar”, eu só estava reproduzindo.

Valeu pessoal…

Muito obrigada pelas respostas !