Você está na página 1de 9

Bubble Sort em Java

O Bubble-Sort é um dos algoritmos de ordenação mais simples.

O algoritmo consiste de percorrer os N elementos de um vetor, para cada vez percorrida, todos os
elementos são comparados com o seu próximo, para verificar se estão na ordem desejada.
Execução do algoritmo de Bubble Sort

– Na primeira iteração, é encontrado o maior elemento e o mesmo é deslocado até a


ultima posição.

- Na segunda iteração, é encontrado o segundo maior elemento e o mesmo é deslocado


até a penúltima posição.

- Continua até que todos os elementos serem ordenados.

OBS: Não é obrigatório colocar sempre o maior elemento no final do vetor,


dependendo da sua lógica de programação, é possível deixar os maiores elementos no
começo e os menores elementos no final.

Implementação do Bubble Sort


Na linha 19 temos a assinatura do método que ordena um vetor de inteiros.
Na linha 21 temos um for para controlar a quantidade de vezes que esse vetor será
ordenado, no caso (v.length – 1) vezes.
Na linha 23 temos um for para ordenar os elementos do vetor, este for irá ordenar
(v.length – 1 – i) vezes. Na quantidade de vezes que o vetor é ordenado subtraímos pela
quantidade de iterações que será realizada no caso a variável i, porque sabemos que
quando uma iteração termina o ultimo elemento já está ordenado.
Na linha 26 verificamos se o valor da posição atual do vetor é maior que o próximo
valor do vetor, se for maior trocamos os valores de lugar.

Uma forma melhorada do Bubble Sort:

Se repararmos na execução do Bubble Sort demonstrado no exemplo anterior,


podemos perceber que se o vetor já estiver ordenado antes de chamar o método que
ordena, será realizado as (v.length – 1) vezes iterações sobre ele e será comparado
todos elementos dele para ver se está ordenado.
Podemos melhorar isso adicionando uma variável de controle que verifica se houve
troca de valores no vetor, porque se durante uma iteração não houver nenhuma troca
de valor, significa que o vetor já está ordenado.

Abaixo está a versão melhorada do Bubble Sort:


Na linha 23 foi criada uma variável boolean para controlar se o vetor está ordenado.
Na linha 32 se houve alguma troca de valor, então o vetor ainda não está totalmente
ordenado, e a variável de controle é alterada para falso.
Na linha 36 se o vetor estiver ordenado então para a execução do for que controla a
quantidade de vezes que o vetor será ordenado.

Exemplo de ordenação de vetor de objetos:

Neste exemplo temos uma classe Animal e cada animal tem uma especie e um nome.
A partir da classe animal, criamos um vetor de animais e queremos ordenar os animais
pelo nome.

Segue abaixo a implementação do programa que ordena o vetor de animais utilizando


o algoritmo de Bubble Sort.
Na linha 28 temos a assinatura do método que ordena um vetor de animais.
Na linha 30 temos um for para controlar a quantidade de vezes que esse vetor será
ordenado, no caso (animais.length – 1) vezes.
Na linha 32 foi criada uma variável boolean para controlar se o vetor está ordenado.
Na linha 34 temos um for para ordenar os elementos do vetor, este for irá ordenar
(animais.length – 1 – i) vezes. Na quantidade de vezes que o vetor é ordenado
subtraímos pela quantidade de iterações que será realizada no caso a variável i,
porque sabemos que quando uma iteração termina o ultimo elemento já está ordenado.
Na linha 37 verificamos se nome do animal da posição atual do vetor é maior que o
nome do próximo animal do vetor, se for maior trocamos os animais de lugar.
Na linha 41 se houve alguma troca de animal, então o vetor ainda não está totalmente
ordenado, e a variável de controle é alterada para falso.
Na linha 45 se o vetor estiver ordenado então para a execução do for que controla a
quantidade de vezes que o vetor será ordenado.

Também podemos ordenar os animais pela espécie e depois pelo nome do animal:
Na linha 65 verifica se o nome da espécie do animal na posição atual do vetor é maior
que o nome da espécie do próximo animal, se for então troca os animais de lugar.
Na linha 74 verifica se o nome da espécie do animal na posição atual do vetor é igual ao
nome da espécie do próximo animal, se as espécies forem iguais, então verifica se o
nome do animal na posição atual do vetor é maior que o nome do próximo animal, se
for maior então troca os animais de lugar no vetor.

Bibliografia

Estrutura de Dados e Algoritmos em Java – Michal T. Goodrich e Roberto Tamassia

Algoritmos: Teoria e Prática – Thomas H. Cormen, Charles E. Leiserson, Ronald


L.Rivest e Clifford Stein

Bubble Sort - http://pt.wikipedia.org/wiki/Bubble_sort

Você também pode gostar