Algoritmos de Ordenação

Propaganda
Estruturas de Dados II
Prof.a Mariella Berger
Algoritmos de Ordenação
1 Objetivo
O objetivo deste trabalho é implementar os algoritmos de ordenação estudados, comparando­os entre si.
1 Implemetação (Parte I)
Inicialmente, o seu trabalho é criar um programa para geração automática de números em C. Este programa, doravante denominado gera, deverá se comportar da seguinte forma:
• quando digitarmos
.\gera ­a n
o programa deverá gerar n números em ordem aleatória.
• quando digitarmos
.\gera ­c n
o programa deverá gerar n números em ordem crescente.
• quando digitarmos
.\gera ­d n
o programa deverá gerar n números em ordem decrescente.
Os números gerados deverão ser apresentados um por linha (sem espaço depois do número!). Segue um exemplo:
.\gera ­c 5
1
2
3
4
5
Os dados obtidos com o algoritmo gera serão utilizados para testar os algoritmos de ordenação da seção seguinte.
1 Implemetação (Parte II)
O seu trabalho agora é implementar em C os seguintes algoritmos de ordenação: permutação, bubblesort, shakesort, insertionsort, shellsort, selectionsort, ranksort, quicksort recursivo, quicksort não­recursivo, mergesort, heapsort, radixsort, radixsort binário e bucketsort.
Algumas observações sobre as implementações dos algoritmos Quicksort seguem:
3.1. Quicksort
O algoritmo Quicksort utiliza um método de particionamento que, escolhido um elemento pivô, gera uma partição de elementos maiores ou iguais ao pivô e outra partição cujos elementos são menores ou iguais ao pivô. Consideraremos, neste trabalho, as seguintes formas de escolher o pivô:
–
O primeiro elemento do bloco;
–
O elemento central do bloco;
–
Mediana de 3 elementos, onde os elementos escolhidos para tal média serão o primeiro, o central e o último.
1 Formatação de Entrada e Saída
O trabalho será testado da seguinte maneira:
./trab3 algoritmo n < entrada.txt
onde:
• entrada.txt será o arquivo com o resultado obtido com o algoritmo gera para n elementos;
• n é o número de elementos a serem ordenados
• algoritmo é o algoritmo que será utilizado na ordenação. As opções são: perm, bubble, shake, insertion, shell, selection, rank, quickrecursivoprimeiro, quickrecursivocentral, quickrecursivomediana3, quickprimeiro, quickcentral, quickmediana3, merge, heap, radix, radixbin e bucket.
Você deverá ter como saída os números da entrada ordenados, sendo cada número em uma linha (sem espaço depois do número!).
Um exemplo da utilização do trabalho escolhendo­se o algoritmo Bubblesort para a ordenação de 10 números:
./trab3 bubble 10 < entrada.txt
Agora um exemplo escolhendo­se o algoritmo Quicksort não recursivo com escolha do pivô utilizando­se o método da mediana de 3 para a ordenação de 10 números:
./trab3 quickmediana3 10 < entrada.txt
1 Documentação
Como resultado deste trabalho deverá ser produzido um artigo técnico em LaTeX utilizando o padrão de artigos, e este deverá ser entregue também impresso.
Na documentação deverão ser apresentadas comparações entre os algoritmos (com gráficos!), os tempos alcançados e os tipos das entradas propostas: aleatória, crescente e decrescente. Uma detalhada discussão sobre os resultados também deverá ser apresentada.
1 Avaliação
• A nota do trabalho terá um total de 10 pontos.
• Serão contemplados com nota zero os trabalhos que se enquadrarem em uma ou mais situações abaixo:
1.
Plágio;
2.
Programa não compila;
3.
Não está de acordo com as especificações.
1 Considerações Importantes
• Modularize o seu código adequadamente. Crie arquivos .c e .h para cada módulo do seu sistema. Em especial, crie arquivos exclusivos para manipular as estruturas de dados dos tipos abstratos de dados que você estiver representando.
• Entrega
Este trabalho deve ser feito INDIVIDUALMENTE e entregue até o dia 08 de junho de 2015, às 23:59:59hs.
Ele deve ser enviado para:
[email protected].
O assunto da mensagem deve ser:
ed2:trab3:<nome1>:<nome2
O nome do arquivo com o trabalho enviado em anexo deve ser trab3.tar.gz. Ele será descompactado da seguinte forma:
tar ­xvzf trab3.tar.gz
e deverá gerar um arquivo chamado Makefile, com as regras de compilação do programa, os arquivos com os códigos dos programas e o arquivo com a documentação em LaTeX (que deverá ser chamado de artigo.tex).
Ao digitar:
make all
deve ser gerado os executáveis gera e trab3 e a documentação em PDF (trab3.pdf) a partir dos fontes em LaTeX
O recebimento dos trabalhos é automatizado. Siga as instruções à risca pois algum erro na submissão pode inviabilizar a entrega do seu trabalho.
Não escreva o seu nome com caracteres estendidos (á, ç, etc.).
Não utilize contas de e­mail do HOTMAIL, BOL ou TERRA pois as mensagens enviadas por esses servidores não seguem o padrão. Assim, o programa de recebimento automático não consegue detectar o seu e­mail.
Não deixe para entregar seu trabalho no último instante. Você poderá perder o prazo e ter seu trabalho invalidado.
1 Observação Importante
Mais detalhes serão discutidos em sala de aula. Considerações feitas em sala terão mais relevância do que as contidas nesta especificação.
1 Dúvidas
Em caso de dúvidas no trabalho contate­me em [email protected].
Download