Beruflich Dokumente
Kultur Dokumente
no 01
1 Introdução e Objetivos
Na área de programação de computadores se faz presente diversas maneiras para se chegar a resolução de um
dado problema. Entretanto, como saber qual a melhor forma em quesito desempenho computacional ? Neste
sentido, com o intuito de analisar e compreender três algoritmos diferentes que buscam encontrar o maior e o
menor valor de um vetor, foram reportadas a análise de tempo e comportamento destes distos algoritmos diante
de um número progressivo de dados.
2 Materiais e Métodos
Os algoritmos analisados neste trabalho foram implementados na linguagem de programação Python pelo fato
da mesma possuir simplicidade, recursos que facilitam a análise dos dados e além disto, a maximização da
produtividade em relação as outras linguagens existentes. Os códigos foram avaliados em um hardware composto
por um processador Intel
c CoreTM i3-5005U, 300GB de HDD, 4GB de RAM, tendo o Linux Mint como sistema
operacional vigente, tais dados são mostrado na imagem abaixo. Para analisar os algoritmos foram utilizados
3 Pré Requisitos
Para a execução destes códigos se faz necessário a instalação da biblioteca matplotlib, responsável por gerar os
gráficos da aplicação. Para instalá-la, digite no terminal:
$ pip3 install matplotlib
Os algoritmos implementados também estão disponı́veis no github
4 Resultados
Os resultados da execução mediante a uma dada entrada estão disponı́vel na tabela abaixo, os dados também
foram plotados em um gráfico que compara os tempos dos três algoritmos.
1
Algoritmos Tamanho da entrada (n)
* 10 1000 10000 100000 1000000 10000000
min max1 0,0000057s 0,000185s 0,0018248s 0,0130169s 0,1223227s 1,2681517s
min max2 0,0000057s 0,0001873s 0,0011558s 0,0117018s 0,1166255s 1,1783337s
min max3 0,0000064s 0,0001313s 0,0013365s 0,0134937s 0,1352157s 1,3551416s
5 Conclusões
Ambos os algoritmos possuem complexidade de O(n), o que faz com que seus tempos sejam bem próximos. O
fator que leva a diferença se faz em relação ao número de comparações que cada um faz mediante ao melhor caso,
pior caso e caso médio. O algoritmo min max2 foi superior aos demais com 10000,100000,1000000 e 10000000
elementos. O min max3 teve sucesso com 1000 elementos. E por fim, com 10 elementos houve um empate entre
min max1 e min max2, ambos com tempo de 0,0000057 segundos. Percebe-se através disto que há inúmeras
formas de se chegar a um mesmo resultado, porém, através da análise da complexidade é possı́vel tomar uma
decisão sábia sobre qual algoritmo escolher.