Selection Sort


Dificuldade ★☆☆

2 minutos de Leitura 🕒

O quê é o Selection Sort?

O Selection Sort (Ordenação por Seleção) é um algoritmo de ordenação que funciona selecionando o menor elemento de um arranjo e colocando-o na primeira posição, depois selecionando o segundo menor elemento e colocando-o na segunda posição, e assim sucessivamente até que o arranjo esteja ordenado.

Quais são as características do Selection Sort?

  • O Selection Sort é um algoritmo iterativo.
  • O Selection Sort é um algoritmo de ordenação por comparação.
  • O Selection Sort não é um algoritmo de ordenação estável.
  • O desempenho do algoritmo Selection Sort não é sensível aos dados de entrada.
  • O Selection Sort não necessita de uma estrutura de dados auxiliar para funcionar.

Qual é o algoritmo do Selection Sort?

  1. Particione o arranjo de elementos a ser ordenado em dois sub-arranjos: (i) um sub-arranjo A inicialmente vazio que contém os elementos já ordenados, e (i) um sub-arranjo B com inicialmente todos os elementos do arranjo original.
  2. Selecione o menor elemento da sub-arranjo B e coloque-o na última posição do sub-arranjo A.
  3. Se o sub-arranjo B não estiver vazio, volte ao Passo 2.
  4. Retorne o sub-arranjo A, que contém os elementos do arranjo original ordenados de forma ascendente.

Qual é o desempenho do Selection Sort?

Pior Caso

O pior caso para o algoritmo Selection Sort ocorre quando o arranjo de elementos já está ordenado de forma inversa. Nessa situação, o algoritmo tem um custo quadrático de comparações e um custo linear de trocas, em função do número de elementos a serem ordenados:

  • O(n²) comparações
  • O(n) trocas

Melhor Caso

O melhor caso para o algoritmo Selection Sort ocorre quando o arranjo de elementos já está ordenado. Nessa situação, o algoritmo tem um custo quadrático de comparações e um custo constante de trocas, em função do número de elementos a serem ordenados:

  • O(n²) comparações
  • O(1) trocas

Quando usar o Selection Sort?

O Selection Sort se destaca em relação aos outros algoritmos de ordenação em dois pontos: (i) por realizar um número mínimo de trocas, e (ii) não necessitar de uma estrutura de dados auxiliar para funcionar.

Por esses motivos, o Selection Sort é indicado para a ordenação de arranjos quando memória extra disponível para uso é escassa, ou então o custo para trocar-se elementos de posição no arranjo é elevado.

Como implementar o Selection Sort?

Veja o código completo no GitHub.