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
- Compare o 1º com o 2º elemento; se o 1º for maior, troque.
- Compare o 2º com o 3º, depois o 3º com o 4º, até o fim do vetor.
- Ao fim da passada, o maior elemento está na última posição.
- Repita ignorando as posições já ordenadas no final.
- Se uma passada inteira não fizer nenhuma troca, o vetor está ordenado e o algoritmo para.
Complexidade do Bubble Sort
| Melhor caso | Caso médio | Pior caso | Memória extra | Está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 vBubble 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.
