Bubble sort

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Esta página ou secção não cita fontes confiáveis e independentes, o que compromete sua credibilidade (desde Agosto de 2013). Por favor, adicione referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)
Bubble sort
classe Algoritmo de ordenação
estrutura de dados Array, Listas ligadas
complexidade pior caso O(n^2)
complexidade caso médio O(n^2)
complexidade melhor caso O(n)
complexidade de espaços pior caso O(1) auxiliar
Algoritmos
Bubble sort animation.gif
Bubble sort cor editada
Bubble sort cor editada

O bubble sort, ou ordenação por flutuação (literalmente "por bolha"), é um algoritmo de ordenação dos mais simples. A ideia é percorrer o vector diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequência. Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo.

No melhor caso, o algoritmo executa n operações relevantes, onde n representa o número de elementos do vector. No pior caso, são feitas n^2 operações. A complexidade desse algoritmo é de Ordem quadrática. Por isso, ele não é recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.

Fluxograma[editar | editar código-fonte]

Bubblesort.png

Implementação[editar | editar código-fonte]

Exemplo em Linguagem C:

#include <stdio.h>
int main(void)
{
    int vetor[10] = {10,9,8,7,6,5,4,3,2,1};
    int tamanho = 10;
    int aux;
    for(int i=tamanho-1; i >= 1; i--) 
    {  
        for( int j=0; j < i ; j++) 
        {
            if(vetor[j]>vetor[j+1]) 
            {
                aux = vetor[j];
                vetor[j] = vetor[j+1];
                vetor[j+1] = aux;
            }
        }
    }

    for( int r = 0; r < 10; ++r)
    {
        printf("%d\n",vetor[r]);
    }
}

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]