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.