8 min

Selection Sort

Algoritmo de ordenação que encontra o menor elemento e o coloca na posição correta, repetindo para o restante do array.

FácilO(n²) / O(1)OrdenaçãoComparaçãoIn-place

Visualizador Interativo

Array[ 5, 3, 8, 4, 2 ]Passo 1 / 26
5
0
pos
3
1
8
2
4
3
2
4
Comparando:arr[0] vs arr[0]
Velocidade:800ms
Historico de Passos
#0Iniciando busca pelo menor elemento a partir da posição 0

Como Funciona

O Selection Sort divide o array em duas partes: ordenada (à esquerda) e não ordenada (à direita). A cada iteração, encontra o menor elemento na parte não ordenada e o move para o final da parte ordenada. A ideia é simples: selecione o menor, coloque no início. Selecione o segundo menor, coloque na segunda posição. E assim por diante. Comparado ao Bubble Sort, o Selection Sort faz menos trocas (no máximo n-1), mas o mesmo número de comparações. Na prática, ambos são O(n²) e não são usados em produção para grandes datasets.

O Selection Sort minimiza o número de trocas, fazendo no máximo n-1 trocas. Útil quando a operação de troca é cara.

Passo a Passo

  1. Começa na primeira posição
  2. Encontra o menor elemento no restante do array
  3. Troca com o elemento na posição atual
  4. Avança para a próxima posição
  5. Repete até percorrer todo o array
  6. A cada iteração, a parte ordenada cresce

Análise de Complexidade

⏱️Tempo
O(n²)

Dois loops aninhados. O externo roda n vezes, o interno roda em média n/2.

Ver prova

Comparações: (n-1) + (n-2) + ... + 1 = n(n-1)/2 = O(n²)

💾Espaco
O(1)

Ordena in-place. Só usa variáveis auxiliares para índice e troca.

🎯Melhor Caso
O(n²)

Mesmo com array já ordenado, ainda precisa verificar todos os elementos para encontrar o mínimo.

⚠️Pior Caso
O(n²)

Sempre faz o mesmo número de comparações, independente da entrada.

Comparação com Outros Algoritmos

AlgoritmoTempoEspacoEstavelMelhor Para
Selection Sort(atual)O(n²)O(1)NaoQuando trocas são caras, arrays pequenos
Bubble SortO(n²)O(1)SimArrays pequenos, fins didáticos
Insertion SortO(n²)O(1)SimArrays pequenos, dados chegando em streaming
Merge SortO(n log n)O(n)SimGrandes datasets, quando estabilidade importa

Dicas e Erros Comuns

  • Começar o loop interno do índice 0 ao invés de i+1
  • Esquecer de fazer a troca quando o mínimo não está na posição i
  • Confundir com Insertion Sort (que insere ao invés de selecionar)

Perguntas de Entrevista

Pratique respondendo a perguntas comuns de entrevistas tecnicas. Clique em uma pergunta para iniciar uma sessao de pratica com IA.

Implementacao

python
1def selection_sort(array):Definição
2 n = len(array)
3
4 for i in range(n - 1):Loop Externo
5 min_index = iÍndice do Mínimo
6
7 for j in range(i + 1, n):Loop Interno
8 if array[j] < array[min_index]:Encontrar Mínimo
9 min_index = j
10
11 if min_index != i:Troca
12 array[i], array[min_index] = array[min_index], array[i]
13
14 return array
15