O objetivo deste trabalho é a implementação de duas funções de ordenação.
O trabalho é em equipe de até duas pessoas. O compartilhamento de informações entre as equipes é permitido (e aconselhado), mas o compartilhamento de código não é permitido. Trabalhos que tenham porções significativas de código iguais, ou copiados da internet, serão anulados.
Ordenar uma lista de valores é necessário em muitos programas, por isso as
linguagens geralmente fornecem uma função de ordenação (como as funções
sorted
e list.sort
em Python).
Na prática usamos estas funções de ordenação prontas, mas escrever as próprias funções de ordenação é um exercício interessante. Existem diversos algoritmos para ordenar os elementos de uma lista. Neste trabalho você deve implementar dois desses algoritmos.
O primeiro algoritmo é chamado de ordenação por seleção. A ideia do algoritmo é encontrar o menor valor na lista de entrada, remover este valor da lista e em seguida inserir este valor na lista de saída. Este processo é repetido até que todos os elementos da lista de entrada tenham sido processados (removidos).
Baseado nesta descrição você deve definir a função ordenacao_selecao
que
recebe como entrada uma lista de números e devolve uma nova lista com os mesmos
elementos da lista de entrada em ordem não decrescente. Você também deve
definir duas funções auxiliares que serão utilizadas no corpo de
ordenacao_selecao
. A função posicao_minimo
, que recebe como entrada uma
lista de números e devolve a posição do valor mínimo da lista. E a função
remove_posicao
que recebe como parâmetro uma lista de números e uma posição
e devolve uma nova lista sem o elemento na posição (você não deve usar a função
pré-definida del
pois ela altera a própria lista ao invés de devolver uma nova
lista).
O segundo algoritmo é chamado de ordenação por inserção. A ideia do algoritmo e selecionar cada elemento da lista de entrada (por ordem de posição) e colocá-lo na posição correta na lista de saída.
Baseado nesta descrição você deve definir a função ordenacao_insercao
que
recebe como entrada uma lista de números e devolve uma nova lista com os mesmos
elementos da lista de entrada em ordem não decrescente. Você também deve
definir a função auxiliar insere_ordenado
que recebe como entrada uma lista
de números (ordenados em ordem não decrescente) e um número n
e devolve uma
nova lista com todos os elementos da lista de entrada e com n
em ordem não
decrescente.
Enviar o arquivo .py
para o e-mail malbarbo arroba gmail.com respeitando
o limite de data e horário de entrega.
O trabalho será avaliado de acordo com os critérios:
Completude: o programa deve estar completo, incluindo descrições e testes.
Corretude: o programa deve funcionar de acordo com a descrição e deve passar em todos os testes.
Organização: o programa deve estar bem organizado, com nomes e constantes adequadas.
Entendimento: o aluno deve entender o programa que escreveu e ser capaz de fazer alterações no código.