Ordenar Vetor

Olá, o código esta certinho, ele ordena, porém, eu nao estou entendendo a lógica feita em uma das partes do código.

[code]public class ordenacao {

public static void main(String[] args)
{
    int array[] = {50,40,60,55,10,27,48,45,65,20};
    boolean Ordenado = false;

    while(!Ordenado)
    {
        Ordenado = true;

        for (int i = 1; i < array.length; i++)
        {
            if (array[i-1] > array[i]) //BASICAMENTE, ESTA PARTE QUE ESTA DENTRO DO IF NAO ESTOU ENTENDENDO, ALGUEM ME PODERIA EXPLICAR DETALHADAMENTE?
            {
                Ordenado = false;
                int aux = array[i];
                array[i] = array[i-1];
                array[i-1] = aux;

                System.out.println("Ordem Atual: "+array[0]+ " " +array[1]+ " " +array[2]
                        + " " +array[3]+ " " +array[4]+ " " +array[5]+ " " +array[6]+ " " +array[7]
                        + " " +array[8]+ " " +array[9]);
            }
        }
    }
}

}[/code]

Agradecido
[]s

isso é o método bubbleSort

é difícil explicar com texto

da uma olhada nesse video: http://www.youtube.com/watch?v=MtcrEhrt_K0

essa parte: (array[i-1] > array[i])

é o seguinte, ele testa se o valor da posição atual é maior que a posição seguinte,

ex: vamos dizer que o array tem 3 posições [0] = 20, [1] = 10, [2] = 5 ele irá verificar:

[0] > [1] 20 é maior que 10? sim então a posição [1] = 20…[0] = 10
[1] > [2] 20 é maior que 5? sim então a posição [2] = 20…[1] = 5

resultado: 10, 5 , 20

Ordenado = false; agora ele volta

[0] > [1] 10 é maior que 5? sim então a posição [1] = 10…posição [0] = 5
[1] > [2] não, ele somente não compara…

Ordenado = false; agora ele volta

[0] > [1] não, ele somente não compara…
[1] > [2] não, ele somente não compara…

Ordenado = true, while recebe false e ele sai do programa

Bom dia,

Este algoritmo é conhecido como bubble sort, ele funciona da seguinte maneira, ele itera pela sua lista verificando se o próximo item da iteração é maior menor que o item atual, dai ele troca a posicao dos itens na lista e depois de algumas iteracoes pela lista ele termina de organizar todas as posicoes.

Não sei se fui claro, mas vc consegue mais informações pesquisando no google por buble sort.

vlws

flws

 if (array[i-1] > array[i])

vai lendo o array e comparando a posição anterior com a proxima, exemplo:

if (array[0] > array[1])
if (array[1] > array[2])

depois ele faz a logica de ordenação

                    Ordenado = false;  
                    int aux = array[i];  
                    array[i] = array[i-1];  
                    array[i-1] = aux;

na logica ele esta usando uma variavel para auxiliar (AUX) e troca os valores dos vetores.Exemplo:

aux = array[1] // Guarda temporariamente
array[1] = array[0] //Joga o valor da posição 0 na 1
array[i-1] = aux; // Joga o valor de aux (que era o valor da posicao 1) na posição 0

eu entendi o que eles faz e talz, mas nao tou conseguindo enchergar neste código a troca de posições

Ordenado = false; int aux = array[i]; array[i] = array[i-1]; array[i-1] = aux;

ok…tenho 2 variáveis…

A = 10;
B = 20;

como você faria para trocar os valores de lugar?

Agora eu entendi…

Brigados aews :slight_smile: