Pular para o conteúdo

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çaO que significa
iConta as passadas.
j e j + 1Os dois vizinhos sendo comparados.
n - 1 - iAté onde o j vai. O "- i" é porque o fim já está arrumado, não precisa olhar de novo.
auxO 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?