Algoritmos em Python

Bubble Sort in Python

Watch the largest value bubble to the end on every pass, and stop early once the list is sorted.

  • Intermediário
  • 2 min de leitura
  • 1 exemplo executável
O que você vai aprender
  • Comparing and swapping neighbours
  • Why each pass fixes one more value
  • The early-exit swapped flag
Passes over [5, 1, 4, 2, 8]
5
1
4
2
8
1
4
2
5
8
1
2
4
5
8
The third pass makes no swap, so the loop ends early.

One pass at a time

O bubble sort compara cada par de elementos vizinhos e os troca de lugar se estiverem fora de ordem. A cada passada, o maior elemento restante vai "subindo" até o fim da lista, como uma bolha que sobe na água. É um algoritmo fácil de entender, ótimo para aprender como a ordenação funciona.

Pontos-chave

  1. Compare each pair of neighbours and swap them if they are out of order.
  2. After pass k, the last k values are in their final places.
  3. If a pass makes no swap, stop: the list is sorted.
  4. O(n²) in general; real code uses sorted().

Quando usar?

  • Treinar o raciocínio para resolver problemas e entender como um algoritmo funciona passo a passo.
  • Escolher a solução certa quando é preciso processar muitos dados ou deixar o programa mais rápido.
  • Se preparar para provas, exercícios e entrevistas de programação.

Visualizador de Ordenação por bolha (bubble sort) em Python

O(n²)

Use Executar ou Passo para acompanhar cada comparação e movimento dos dados.

Código de exemplo

Executar código →
main.py
def bubble_sort(values):
    result = values.copy()
    for end in range(len(result) - 1, 0, -1):
        swapped = False
        for index in range(end):
            if result[index] > result[index + 1]:
                result[index], result[index + 1] = result[index + 1], result[index]
                swapped = True
        if not swapped:
            break
    return result

print(bubble_sort([5, 1, 4, 2, 8]))
Gerar um botão Run para este exemplo

Resultado da execução

[1, 2, 4, 5, 8]

Explicação do código

Depois de cada passada, o maior valor da parte não ordenada já está na posição final, então a passada seguinte fica um elemento mais curta. A variável swapped registra se houve alguma troca. Se nenhuma troca acontecer, a lista já está ordenada e o laço para mais cedo. No pior caso, a complexidade é O(n²), por isso não é indicado para grandes volumes de dados.

Altere os valores e execute o programa no compilador Python online CodeUtility sem instalar Python.

Exercícios práticos

Tente modificar o código seguindo as sugestões abaixo. Mudar o código e observar o resultado ajuda você a entender muito mais do que só ler.

  1. Teste com uma lista vazia, uma lista de um único elemento e uma lista com valores repetidos.
  2. Imprima o estado depois de cada passo para ver o algoritmo trabalhando.
  3. Meça o tempo com 100, 1.000 e 10.000 elementos e compare com outra solução.
Executar no compilador Python →

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios