Pular para o conteúdo

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çaO que significa
minGuarda a POSIÇÃO do menor encontrado (não o valor).
j = i + 1Procura só depois do lugar atual.
troca fora do for de dentroPrimeiro 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?