Ordenação
Selection sort: escolhendo o time
Acha o menor e troca uma vez só.
Na vida real
Montando a fila em ordem: você olha todo mundo que ainda está fora do lugar, acha o menor e chama ele pra frente, trocando de lugar com quem estava ali. Depois faz o mesmo pro segundo lugar, e assim vai.
Código
for (i = 0; i < n - 1; i++) { min = i; for (j = i + 1; j < n; j++) if (v[j] < v[min]) min = j; aux = v[i]; v[i] = v[min]; v[min] = aux;}passo 1 de 17
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.
- comparando
- acabou de mudar
- já está no lugar certo
Peça por peça
| Peça | O que significa |
|---|---|
| min | Guarda a POSIÇÃO do menor encontrado (não o valor). |
| j = i + 1 | Procura só depois do lugar atual. |
| troca fora do for de dentro | Primeiro olha todo mundo, depois troca uma vez só. |
Pra decorar: "acha o menor, troca uma vez". Tem a variável min e a troca fica fora do for de dentro.
Teste rápido: No selection, quantas trocas por passada?