Instruções

Implementar o Algoritmo de Ordenação por Seleção

Selection sort é outro algoritmo de ordenação popular ensinado na maioria dos cursos de ciência da computação. Este algoritmo funciona encontrando repetidamente o menor elemento da porção não ordenada da lista e trocando-o com o primeiro elemento não ordenado. Ele começa selecionando o valor mínimo em toda a lista e trocando-o com o primeiro elemento. Então ele se move para a segunda posição, encontra o menor valor nos elementos restantes não ordenados e o troca com o segundo elemento. Este processo continua, avançando pela lista um elemento de cada vez, até que toda a lista esteja ordenada. A ordenação por seleção resulta em uma complexidade de tempo quadrática nos cenários de melhor, médio e pior caso. A complexidade de espaço será constante O(1) porque a ordenação é feita in loco e uma quantidade constante de memória está sendo usada independentemente do tamanho da lista. Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório. Histórias de Usuário: 1. Você deve definir uma função chamada selection_sort. 1. Sua função selection_sort deve ter um parâmetro que representa a lista de itens. 1. Sua função selection_sort deve receber uma lista e ordenar os itens no local do menor para o maior. 1. Sua função selection_sort deve modificar a lista de entrada in-place e retorná-la assim que estiver ordenada. 1. Sua função selection_sort deve seguir o algoritmo de ordenação por seleção, trocando o menor elemento da parte não ordenada da lista com o primeiro elemento não ordenado. 1. Sua função selection_sort não deve realizar trocas desnecessárias quando o menor elemento já estiver na posição correta. 1. Sua função selection_sort não deve usar nem o método embutido sort() nem a função sorted().

O que fazer:

Testes:

  • Você deve ter uma função chamada `selection_sort`.
  • Sua função `selection_sort` deve ter um parâmetro.
  • Você não deve importar nenhum módulo ou usar métodos de ordenação embutidos no seu código.
  • Seu `selection_sort` deve retornar a mesma lista que a lista de entrada.
  • Seu `selection_sort` deve modificar a lista de entrada in-place. Você não deve usar nenhum método que adicione ou remova itens da lista.
  • Sua função `selection_sort` deve seguir o algoritmo de ordenação por seleção, trocando o valor mínimo na parte não ordenada da lista com o primeiro elemento não ordenado. Evite trocas desnecessárias quando o valor mínimo já estiver na posição correta.
  • `selection_sort([33, 1, 89, 2, 67, 245])` deve retornar `[1, 2, 33, 67, 89, 245]`.
  • `selection_sort([5, 16, 99, 12, 567, 23, 15, 72, 3])` deve retornar `[3, 5, 12, 15, 16, 23, 72, 99, 567]`.
  • `selection_sort([1, 4, 2, 8, 345, 123, 43, 32, 5643, 63, 123, 43, 2, 55, 1, 234, 92])` deve retornar `[1, 1, 2, 2, 4, 8, 32, 43, 43, 55, 63, 92, 123, 123, 234, 345, 5643]`.
  • Sua função `selection_sort` deve ordenar corretamente qualquer lista de números.

Preview