Bubble Sort - Método de Ordenação Bolha

download Bubble Sort - Método de Ordenação Bolha

If you can't read please download the document

description

Bubble Sort - Complexidade Algoritmica.- Definicao- Complexidade- Exemplo- Algoritmo- Codigo- Analise de Tempo

Transcript of Bubble Sort - Método de Ordenação Bolha

Bubble Sort

O mtodo de ordenao por flutuao, tambm chamado de mtodo bolha (Bubble Sort), um dos mais simples algoritmos de ordenao, porm um dos mais difundidos e conhecidos mtodos para ordenao de arranjos. A ideia principal percorrer o vetor inteiro por vrias vezes, a cada passagem o algoritmo faz o maior (ou menor) elemento da sequncia flutuar para o final (ou topo) do vetor. O nome do mtodo Bolha dado pois essa movimentao similar a maneira como as bolhas em um recipiente de gua procuram seu nvel prprio.

Complexidade do Algoritmo

Melhor caso: O algoritmo executa n operaes relevantes no seu melhor caso, n representa o nmero de elementos do vetor.

Pior caso: No pior caso, o algoritmo executa n operaes relevantes.

A complexidade do algoritmos Bubble Sort de Ordem Quadrtica, por essa razo no recomenda-se o algoritmo para programas que necessitam de velocidade e operem com uma quantia elevada de dados.

Melhor caso: O(n).

Caso Mdio: O(n).

Pior Caso: O(n).

Memria: 1.

O algoritmo denominado um algoritmo de troca.

Exemplo de ordenao crescente de valores

5 3 1 4 2

O primeiro passo comparar as duas primeiras posies, nesse caso os valores 5 e 3;

Se o primeiro nmero for maior que o segundo, troca-se a posio dos valores.

3 5 1 4 2

Aps o primeiro passo, repete-se a operao at o final da sequncia.

5 maior que um, ento:

3 1 5 4 2

5 maior que 4, assim:

3 1 4 5 2

por ltimo, 5 maior que 2:

3 1 4 2 5

Podemos reparar que o ltimo valor est em seu lugar certo, dessa maneira preciso ordenar o restante dos itens, porm o ltimo item no precisa ser testado novamente.
3 maior que 1:

1 3 4 2 5

4 maior que 2:

1 3 2 4 5

O item 4 est na sua posio correta, ento o algoritmo deve ser aplicado novamente. Nessa nova aplicao o algoritmo ir somente at a terceira posio e assim sucessivamente, obtendo o resultado final esperado.

1 2 3 4 5

Obs.: Essa execuo foi feita para a ordenao crescente, para a decrescente haveria troca se o primeiro valor fosse menor que o segundo.

Algoritmo de Bubble Sort

Cdigo em C referente ao algoritmo de Bubble Sort.

void Bolha (Vetor A; Indice n)

{Indice i,j;

Item temp;

for (i:=n-1;i>=1;i--)

{ for (j=0; j= 1) && (troca == TRUE); i--)

{

troca = FALSE; for (j= 0; j < i ;j++)

{

if (A[j].chave < A[j+1].chave)

{

temp = A[j].chave;

A[j].chave = A[j+1].chave;

A[j+1].chave = temp;

troca = TRUE;}}} }

Plot de Complexidade de Tempo para Bubble Sort

Os resultados escritos no grfico (GNUPlot) acima, mostram operaes de Bubble Sort para at 10.000 dados. Podemos observar que, de maneira oposta ao que esperamos, o estado inicial dos dados (invertidos, ordenados, randmicos, etc) no parecem afetar muito o tempo de ordenao.

As diferenas so bastante pequenas, embora uma performance um pouco maior com dados j ordenados possa ser notada se olharmos com ateno. Porm, isto entra com conflito com a nossa noo intuitiva de que, j que o Bubble Sort trabalha invertendo dados adjacentes fora de ordem, se os dados j estiverem em ordem, ele supostamente trabalharia muito mais rpido, j que nesse caso no h mudana de posies.

Esta noo est correta, o que no levamos em considerao que o custo da operao de troca de posies relativamente baixo se a compararmos as operaes que sero executadas de qualquer forma para todos os dados.

Anlise e Projeto de Algoritmos

Complexidade de Algoritmos

Bubble Sort

Aluna: Ana Carolina Clivatti Ferronato

Matrcula: 012060070

UNIVERSIDADE FEDERAL FLUMINENSE

MAIO/2015