Voltar
OrdenaçãoIniciante

Ordenação por Seleção

Encontre o menor, coloque na posição certa — repita até ordenar tudo.

Tempo:O(n²)
Espaço:O(1)
01

Como Funciona

Passo a passo do algoritmo

1

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) - 1
2

Busque 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]
3

Registre o menor encontrado

Atualize o índice do menor elemento cada vez que encontrar um valor ainda menor durante a varredura.

minIndex = j
4

Troque 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])
5

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 tudo
02

Implementaçã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]
03

Playground

Visualize o algoritmo em ação

ordenacao-por-selecao — passo 1 de 40
64
[0]
25
[1]
12
[2]
22
[3]
11
[4]
90
[5]
45
[6]
Iniciando ordenação por seleção...
LentoRápido
04

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.

05

Complexidade

Análise de desempenho por cenário

CenárioTempo
Melhor casoO(n²)
Caso médioO(n²)
Pior casoO(n²)