Ordenação
Bubble sort: a fila por altura
Vizinho com vizinho, o maior afunda pro fim.
Na vida real
Alunos numa fila, e cada um só pode olhar pro vizinho do lado. Se o da esquerda for mais alto, os dois trocam de lugar. Depois de uma passada inteira, o mais alto chegou no fim da fila. Repete até ninguém precisar trocar.
Código
for (i = 0; i < n - 1; i++) for (j = 0; j < n - 1 - i; j++) if (v[j] > v[j + 1]) { aux = v[j]; v[j] = v[j + 1]; v[j + 1] = aux; }passo 1 de 18
Também dá pra usar as setas ← e → do teclado.
O que o computador está vendo
Caixas (variáveis)
4n
Vetor (gavetas)
5[0]
1[1]
4[2]
2[3]
Tela
Fila bagunçada: 5 1 4 2. Objetivo: ordem crescente.
- comparando
- acabou de mudar
- já está no lugar certo
Peça por peça
| Peça | O que significa |
|---|---|
| i | Conta as passadas. |
| j e j + 1 | Os dois vizinhos sendo comparados. |
| n - 1 - i | Até onde o j vai. O "- i" é porque o fim já está arrumado, não precisa olhar de novo. |
| aux | O copo vazio da troca (igual no ponteiro). |
Pra decorar: "vizinho com vizinho, o maior afunda". Dois for, compara v[j] com v[j + 1], troca com aux.
Teste rápido: Depois da 1ª passada do bubble, onde está o maior número?