Numexa logoNumexa

Bubble Sort: Animação Passo a Passo

Veja cada comparação e cada troca acontecendo.

Comparações: 0 · Trocas/escritas: 0

Vetor inicial

comparandotrocando/escrevendopivôna posição final

O Bubble Sort, ou ordenação por bolha, percorre o vetor várias vezes comparando pares de elementos vizinhos e trocando os que estão fora de ordem. A cada passada, o maior elemento ainda desordenado “sobe” até o fim, como uma bolha.

Como o Bubble Sort Funciona

  1. Compare o 1º com o 2º elemento; se o 1º for maior, troque.
  2. Compare o 2º com o 3º, depois o 3º com o 4º, até o fim do vetor.
  3. Ao fim da passada, o maior elemento está na última posição.
  4. Repita ignorando as posições já ordenadas no final.
  5. Se uma passada inteira não fizer nenhuma troca, o vetor está ordenado e o algoritmo para.

Complexidade do Bubble Sort

Melhor casoCaso médioPior casoMemória extraEstável?
O(n)O(n²)O(n²)O(1)Sim

Quando usar

Praticamente só para ensino. É simples de entender, mas faz muitas trocas. Para vetores pequenos ou quase ordenados, o Insertion Sort é melhor em todos os aspectos.

Bubble Sort em C

void bubble_sort(int v[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int trocou = 0;
        for (int j = 0; j < n - 1 - i; j++) {
            if (v[j] > v[j + 1]) {
                int aux = v[j];
                v[j] = v[j + 1];
                v[j + 1] = aux;
                trocou = 1;
            }
        }
        if (!trocou) break;
    }
}

Bubble Sort em Python

def bubble_sort(v):
    n = len(v)
    for i in range(n - 1):
        trocou = False
        for j in range(n - 1 - i):
            if v[j] > v[j + 1]:
                v[j], v[j + 1] = v[j + 1], v[j]
                trocou = True
        if not trocou:
            break
    return v

Bubble Sort em Java

static void bubbleSort(int[] v) {
    for (int i = 0; i < v.length - 1; i++) {
        boolean trocou = false;
        for (int j = 0; j < v.length - 1 - i; j++) {
            if (v[j] > v[j + 1]) {
                int aux = v[j]; v[j] = v[j + 1]; v[j + 1] = aux;
                trocou = true;
            }
        }
        if (!trocou) break;
    }
}

Quer comparar com outros métodos? No visualizador de algoritmos de ordenação você roda todos no mesmo vetor e compara o número de comparações e trocas.

Perguntas Frequentes

Qual a complexidade do Bubble Sort?

O(n²) no caso médio e no pior caso (vetor invertido). No melhor caso, com o vetor já ordenado e a parada antecipada, é O(n), porque basta uma passada sem trocas.

O Bubble Sort é estável?

Sim. Ele só troca elementos estritamente maiores, então elementos iguais mantêm a ordem original entre si.

Por que o Bubble Sort é lento?

Porque cada elemento só anda uma posição por troca. Um número pequeno no fim do vetor precisa de n − 1 passadas para chegar ao começo.

Ferramentas Relacionadas