Trabalho / Ordenação

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.

Descrição

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.

Envio do trabalho

Enviar o arquivo .py para o e-mail malbarbo arroba gmail.com respeitando o limite de data e horário de entrega.

Avaliação

O trabalho será avaliado de acordo com os critérios: