8 min

Bubble Sort

Algoritmo de ordenação que compara elementos vizinhos e troca quando estão fora de ordem.

FácilO(n²) / O(1)OrdenaçãoComparaçãoIn-place

Visualizador Interativo

Array[ 5, 3, 8, 4, 2 ]Passo 1 / 22
5
0
3
1
8
2
4
3
2
4
Comparando:arr[0] vs arr[1]
Velocidade:800ms
Historico de Passos
#0Comparando arr[0]=5 com arr[1]=3

Como Funciona

O Bubble Sort é provavelmente o primeiro algoritmo de ordenação que você aprende. A ideia é simples: percorra o array comparando vizinhos, e se estiverem fora de ordem, troque. O nome vem do comportamento dos elementos maiores, que "borbulham" para o final a cada passada. Depois de uma passada completa, o maior elemento está na última posição. Depois de duas, os dois maiores estão no lugar. E assim por diante. Na prática, ninguém usa Bubble Sort em produção. Merge Sort e Quick Sort são ordens de magnitude mais rápidos. Mas entender Bubble Sort ajuda a construir intuição sobre ordenação e complexidade.

O Bubble Sort é didático, mas lento. Use Merge Sort ou Quick Sort para qualquer coisa séria.

Passo a Passo

  1. Começa no primeiro elemento
  2. Compara com o vizinho da direita
  3. Se estiver fora de ordem, troca
  4. Avança para o próximo par
  5. Repete até o final do array
  6. O maior elemento agora está na última posição
  7. Repete o processo, ignorando os elementos já ordenados

Analise de Complexidade

⏱️Tempo
O(n²)

Dois loops aninhados. O externo roda n-1 vezes, o interno roda em média n/2.

Ver prova

Comparações: (n-1) + (n-2) + ... + 1 = n(n-1)/2 = O(n²)

💾Espaco
O(1)

Ordena in-place. Só usa variáveis auxiliares para a troca.

🎯Melhor Caso
O(n)

Array já ordenado + flag de otimização = uma passada sem trocas.

⚠️Pior Caso
O(n²)

Array em ordem reversa. Cada elemento precisa percorrer todo o array.

Comparacao com Outros Algoritmos

AlgoritmoTempoEspacoEstavelMelhor Para
Bubble Sort(atual)O(n²)O(1)SimArrays pequenos, fins didáticos
Merge SortO(n log n)O(n)SimGrandes datasets, quando estabilidade importa
Quick SortO(n log n)O(log n)NaoUso geral, boa performance média
Insertion SortO(n²)O(1)SimArrays pequenos, dados chegando em streaming

Dicas e Erros Comuns

  • Não reduzir o range do loop interno (os últimos elementos já estão ordenados)
  • Esquecer a otimização de early exit quando não há trocas
  • Confundir índices na hora da troca

Perguntas de Entrevista

Pratique respondendo a perguntas comuns de entrevistas tecnicas. Clique em uma pergunta para iniciar uma sessao de pratica com IA.

Implementacao

python
1def bubble_sort(array):Definição
2 n = len(array)
3
4 for i in range(n - 1):Loop Externo
5 swapped = FalseOtimização
6
7 for j in range(n - i - 1):Loop Interno
8 if array[j] > array[j + 1]:Comparação e Troca
9 array[j], array[j + 1] = array[j + 1], array[j]
10 swapped = True
11
12 if not swapped:Saída Antecipada
13 break
14
15 return array
16