Ordenação por Seleção
Encontre o menor, coloque na posição certa — repita até ordenar tudo.
O(n²)O(1)Como Funciona
Passo a passo do algoritmo
Comece pela primeira posição
Marque a primeira posição do array como a posição atual onde você vai colocar o menor elemento encontrado.
para i de 0 até tamanho(lista) - 1Busque o menor elemento no restante
Percorra todos os elementos à direita da posição atual e encontre o índice do menor elemento.
minIndex = i; para j de i+1 até fim: se lista[j] < lista[minIndex]Registre o menor encontrado
Atualize o índice do menor elemento cada vez que encontrar um valor ainda menor durante a varredura.
minIndex = jTroque com a posição atual
Após varrer todo o restante, troque o menor elemento encontrado com o elemento da posição atual.
trocar(lista[i], lista[minIndex])Avance para a próxima posição
Repita o processo para a próxima posição. Cada iteração coloca um elemento na sua posição final, até ordenar todo o array.
incrementar i; repetir até ordenar tudoImplementação
Código comentado em JavaScript e Python
function ordenacaoPorSelecao(lista) {
const n = lista.length;
for (let i = 0; i < n - 1; i++) {
// Encontra o índice do menor elemento no restante
let minIndex = i;
for (let j = i + 1; j < n; j++) {
if (lista[j] < lista[minIndex]) {
minIndex = j;
}
}
// Troca o menor com a posição atual
if (minIndex !== i) {
[lista[i], lista[minIndex]] = [lista[minIndex], lista[i]];
}
}
return lista;
}
// Exemplo de uso
const numeros = [64, 25, 12, 22, 11];
ordenacaoPorSelecao(numeros);
console.log(numeros); // [11, 12, 22, 25, 64]Playground
Visualize o algoritmo em ação
Quando Usar
Cenários ideais para este algoritmo
Listas pequenas
Para poucos elementos (até ~50), a simplicidade do algoritmo compensa sua ineficiência — overhead de algoritmos sofisticados não vale a pena.
Ensino de algoritmos
É um dos primeiros algoritmos de ordenação ensinados porque sua lógica é muito clara e fácil de visualizar.
Minimizar número de trocas
Faz apenas O(n) trocas — o mínimo possível. Útil quando o custo de escrever na memória é muito alto (ex: flash memory, EEPROM).
Memória limitada
Ordena in-place usando apenas O(1) de memória extra, sem necessidade de arrays auxiliares.
Complexidade
Análise de desempenho por cenário
| Cenário | Tempo |
|---|---|
| Melhor caso | O(n²) |
| Caso médio | O(n²) |
| Pior caso | O(n²) |