Você recebeu a tarefa de fazer um benchmark para a escolha do algoritmo de ordenação mais eficiente em alguns cenários que serão parte do novo sistema de uma software house.
O cliente solicitou uma análise bem elaborada sobre as comparações e avaliações feitas sob diferentes cenários, tais como:
• Ordenar pequenos volumes de dados: 10 a 100 informações;
• Ordenar médios volumes de dados: 1.000 a 50.000 informações;
• Ordenar grandes volumes de dados: 100.000 a 500.000 informações; e
• Ordenar volumes massivos de dados: 10.000.000 a 50.000.000 informações.
O cliente quer que você apresente:
-
Uma análise do tempo despendido em cada algoritmo de ordenação para cada cenário;
-
Uma análise sobre o número de operações (repetições ou recursões) em cada algoritmo de ordenação para cada cenário;
-
Correlacione cada algoritmo com os cenários (ex. o algoritmo de ordenação X foi 33% mais rápido do que o Y, pois apresentou N operações a menos no cenário com médio volume de dados por causa de A, B, C, … motivos); e
-
Justifique porque cada algoritmo utilizado apresentou melhor ou pior desempenho em cada cenário (ex. no cenário pequeno o algoritmo Z apresentou o melhor desempenho por J, K, L razões. Já no cenário médio, o algoritmo H foi melhor porque teve menor tempo de execução devido a M, N, O, …. características).
Tabele os dados, apresente gráficos de evolução ou tendência e afins (barras, linhas, colunas, etc) e “venda o seu peixe, melhor que o seu concorrente”.
O vendedor (aluno) que apresentar a melhor análise (mais bem elaborada, detalhada, justificada e organizada) obterá nota 10 e os demais receberão cotação (nota) nivelada de acordo com a abrangência geral dos trabalhos elaborados. Trabalhos similares terão a nota dividida pelo número de cópias/replicações.
Os dados a serem ordenados podem ser de qualquer tipo (int, char, float, dados compostos/estruturados, …);
(bônus) Quem implementar um sistema que permita escolher o número de informações a ser ordenada e o algoritmo de ordenação, e exibir “graficamente” (interface gráfica de janela, não no console) o processo de ordenação passo-a-passo, poderá ter um bônus de até 5 pontos retroativos a outras avaliações da disciplina.
No mínimo, os seguintes algoritmos de ordenação devem ser analisados:
• Bubble Sort;
• Selection Sort;
• Insertion Sort;
• Quick Sort; e
• Merge Sort.