Você está na página 1de 6

RELATÓRIO TÉCNICO - SISTEMA PARA MENSURAÇÃO DE

DESEMPENHO DE MÉTODOS DE ORDENAÇÃO


Adão Marcelo Cuevas
Hiago Henrique Gonçalves Pelicioni Lugon
Ryan Larréa dos Santos

1. Introdução
O teste de desempenho de algoritmos de ordenação de arrays é um
componente fundamental no campo da ciência da computação e análise de
algoritmos. A ordenação é uma operação amplamente utilizada em diversas
aplicações, desde a organização de grandes volumes de dados até a otimização
de algoritmos de busca. Portanto, a escolha do algoritmo de ordenação
apropriado desempenha um papel crítico na eficiência e na escalabilidade de
sistemas de software.
Este relatório técnico tem como objetivo apresentar os resultados de um
estudo de benchmark realizado para avaliar o desempenho de diferentes
algoritmos de ordenação aplicados a arrays de dados. Os algoritmos
selecionados para este estudo incluem uma variedade de técnicas tradicionais e
modernas, abrangendo desde métodos clássicos como o Bubble Sort, Selection
Sort e Insertion Sort até abordagens mais recentes como o Quick Sort, Merge
Sort e Heap Sort.
O teste de desempenho desses algoritmos é crucial para entender o
comportamento de cada um em relação ao tempo de execução, uso de recursos
de hardware e capacidade de escalabilidade. O conhecimento adquirido a partir
deste estudo contribuirá para a tomada de decisões informadas na seleção do
algoritmo de ordenação mais adequado a uma determinada aplicação,
considerando fatores como o tamanho dos dados, a distribuição dos valores e
as restrições de recursos.
Neste relatório, descreveremos a metodologia empregada no benchmark,
os algoritmos de ordenação avaliados, os cenários de teste, as métricas de
desempenho utilizadas e, por fim, os resultados obtidos. O objetivo é fornecer
informações valiosas para orientar desenvolvedores, engenheiros de software e
pesquisadores na escolha e otimização de algoritmos de ordenação de acordo
com as necessidades de suas aplicações.
2. Casos de teste
A seguir, apresentaremos a estrutura de divisão de tópicos que será seguida
neste relatório de benchmark de algoritmos de ordenação. Cada um dos quatro
casos de teste diferentes será detalhado por meio de uma tabela e um gráfico
correspondente. Para contextualização, os dados estatísticos apresentados nos
gráficos representam o valor médio do tempo de execução calculado a partir da
obtenção desses tempos medidos em segundos de cinco testes nas mesmas
condições.

2.1. Primeiro Teste


Neste primeiro tópico, analisaremos o desempenho dos algoritmos de
ordenação quando aplicados a um array de 1 milhão de elementos
desordenados. Apresentaremos uma tabela e um gráfico que ilustram os
resultados obtidos nesse cenário.

TEMPO DE EXECUÇÃO (Segundos)

2.531,16

540,44
257,80 2,71 2,41 4,82

BUBBLE SORT SELECTION SORT INSERTION SORT MERGE SORT QUICK SORT HEAP SORT

Neste primeiro caso de teste, o Quick Sort demonstrou ser o algoritmo mais
eficiente, ordenando o array em um tempo notavelmente menor, obtendo assim
um tempo médio de apenas 2,4 segundos. Em contrapartida, o Bubble Sort foi o
método mais lento devido à sua abordagem simples e demorada, levando um
tempo médio de aproximadamente 42 minutos para concluir toda a ordenação.
2.2. Segundo Teste
No segundo tópico, analisaremos o desempenho dos algoritmos quando
são executados para ordenar um array que contém 750 mil elementos
ordenados de maneira crescente. Novamente, uma tabela e um gráfico serão
apresentados para visualizar o desempenho nesse contexto.

TEMPO DE EXECUÇÃO (Segundos)

281,72

0,03 0,06 1,54 0,78 2,80

BUBBLE SORT SELECTION SORT INSERTION SORT MERGE SORT QUICK SORT HEAP SORT

Observando as imagens, concluímos que o algoritmo que se destacou com o


maior tempo médio foi o Selection Sort, levando em torno de 4 minutos e meio
para concluir a execução. Por outro lado, os demais métodos apresentaram
tempos médios praticamente na mesma faixa de valores. Isso ocorre pelo fato
de trabalharmos com um array já ordenado.
2.3. Terceiro Teste
O terceiro tópico se concentrará no desempenho dos algoritmos ao lidar com
um array de 750 mil elementos ordenados de maneira decrescente. Da
mesma forma, serão fornecidos uma tabela e um gráfico para a análise dos
resultados.

TEMPO DE EXECUÇÃO (Segundos)

785,70

479,40

284,26

1,45 0,81 2,59

BUBBLE SORT SELECTION SORT INSERTION SORT MERGE SORT QUICK SORT HEAP SORT

Neste cenário de teste, mais uma vez, o Quick Sort se destacou como o
algoritmo mais eficiente. Porém, ao observamos o gráfico gerado a partir dos
dados coletados, percebe-se que os três primeiros algoritmos obtiveram tempos
mais altos devido à sua estrutura básica. Já os três últimos obtiveram
praticamente a mesma faixa de tempo devido às suas condições de varredura.
Ou seja, ao executarmos, eles realizam uma verificação no array por completo.
Se já estiver ordenado, a ordenação que seria feita simplesmente é ignorada.
2.4. Quarto Teste
Por fim, no quarto e último tópico, examinaremos o desempenho dos
algoritmos diante de um array de 500 mil números parcialmente ordenados,
com os mil primeiros números ordenados de forma crescente e os 499 mil
restantes dispostos aleatoriamente. Tabela e gráfico também acompanharão a
análise deste caso de teste.

TEMPO DE EXECUÇÃO (Segundos)

300,75
233,69

120,59

0,95 0,53 1,63

BUBBLE SORT SELECTION SORT INSERTION SORT MERGE SORT QUICK SORT HEAP SORT

Na última bateria de testes, realizada com um array de tamanho menor,


observamos uma redução nos tempos de ordenação em comparação com os
casos anteriores. No entanto, é importante notar que os três primeiros algoritmos
testados ainda obtiveram tempos relativamente mais altos em relação aos três
últimos. Isso se deve, novamente, à condição de varredura presente nesses
algoritmos. Eles dão skip na parte que já está na ordem correta e começam a
ordenar o que falta.
3. Conclusão
Neste estudo abrangente de benchmark de algoritmos de ordenação, os
resultados obtidos revelam a importância crítica da escolha do algoritmo
apropriado em aplicações de processamento de dados. O Quick Sort se
destacou consistentemente como o algoritmo mais eficiente em todos os
cenários testados, demonstrando sua versatilidade e eficácia na ordenação de
arrays de diferentes tamanhos e estados de ordenação. Por outro lado,
algoritmos como o Bubble Sort e o Selection Sort mostraram-se menos
eficientes, demandando consideravelmente mais tempo em comparação com os
algoritmos mais eficazes. Esses resultados enfatizam a necessidade de adaptar
a escolha do algoritmo de ordenação de acordo com as características e
requisitos específicos de cada aplicação, visando a otimização do desempenho
e a eficiência no processamento de dados. Concluímos, assim, que a análise
criteriosa dos algoritmos de ordenação desempenha um papel essencial na
garantia de sistemas de software eficazes e responsivos.

Você também pode gostar