# Selection Sort

Neste exercício vamos implementar outro algoritmo clássico: selection sort.

A ideia é simplesmente selecionar para cada célula da array o menor valor da parte ainda não ordenada. Então para a primeira célula, pegamos o menor valor da array toda. Para a segunda, pegamos o segundo menor valor, que é o menor valor das células ainda não ordenadas.

De forma mais geral, para a célula N, ele busca a célula M em [N;len] contendo o menor valor possível do intervalo. Então, alterna o conteúdo da célula N com o da célula M.

## Variações existentes

Outro algoritmo clássico cuja ideia é baseada na seleção de bons elementos é o HeapSort, mas ele usa uma estrutura de dados heap que ainda não vimos. Simplesmente lembre que o HeapSort fornece um desempenho O(n log n) no pior caso, que é o motivo para ele ser bem interessante na prática.