Ordenar Vetor

6 respostas
A

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.

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]);
                }
            }
        }
    }

}

Agradecido
[]s

6 Respostas

douglaskd

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

jpjcjbr

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

Polverini
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
A

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;

douglaskd

ok…tenho 2 variáveis…

A = 10;
B = 20;

como você faria para trocar os valores de lugar?

A

Agora eu entendi…

Brigados aews :slight_smile:

Criado 23 de fevereiro de 2011
Ultima resposta 23 de fev. de 2011
Respostas 6
Participantes 4