Você está na página 1de 2

Avaliao de Desempenho dos Algoritmos de Ordenao

Foram testados com diferentes tamanhos de entrada, sete algoritmos de ordenao:


Insertion Sort, Selection Sort, Bubble Sort, Shell Sort, Heap Sort, Merge Sort e Quicksort.
Todos foram executados dez vezes para cada tamanho de entrada, e foi feita a mdia de
tempo para cada execuo, chegando ao um valor mais confivel para anlise. Os
resultados obtidos esto na tabela a seguir. Os dados esto em milissegundos.

Tamanho da Entrada 10 100 1000 10000 100000 1000000


Insertion Sort 0,001 0,024 1,704 88,878 9022,178 883293,115
Selection Sort 0,002 0,069 5,33 559,871 56528,015 5629790,721
Bubble Sort 0,001 0,04 3,355 401,874 46219,632 4654950,564
Shell Sort 0,002 0,005 0,156 2,561 26,702 411,049
Heap Sort 0,001 0,008 0,203 2,609 32,649 423,513
Merge Sort 0,011 0,018 0,143 1,677 20,764 246,405
Quicksort 0,002 0,018 0,147 1,746 21,124 252,681

Desempenho dos Algoritmos de Ordenao


800000

700000
Insertion Sort
600000 Selection Sort
Bubble Sort
500000 Shell Sort
Heap Sort
400000 Merge Sort
Quicksort
300000 n
n lg n
200000

100000

0
10 100 1000 10000 100000 1000000

Estes resultados foram plotados em um grfico para uma melhor anlise. Podemos
perceber a diferena enorme de desempenho dos primeiros trs algoritmos (Insertion
Sort, Selection Sort e Bubble Sort) para os outros, quando o tamanho da entrada cresce
bastante. Percebe-se o quanto o grfico dos trs primeiros algoritmos cresce muito mais
com a entrada dos que os outros. Isto se deve as suas complexidades assintticas, que
so O(n2 ) no pior caso. Diferente dos demais algoritmos, que so O(n log 2 (n)) , onde
n o tamanho da entrada.
Para uma melhor visualizao, o grfico a seguir est com o eixo Y (tempo de execuo
em milissegundos) em escala logartmica. Assim podemos ver melhor as linhas e
perceber a semelhana do crescimento das linhas dos algoritmos e das funes de suas
complexidades assintticas.

Desempenho dos Algoritmos de Ordenao


10000000000

100000000
Insertion Sort
1000000 Selection Sort
Bubble Sort
Shell Sort
10000
Heap Sort
Merge Sort
100 Quicksort
n
1 n lg n

0,01

0
10 100 1000 10000 100000 1000000

Em verde limo, est a funo n2 para comparao com o Insertion Sort (azul escuro),
Selection Sort (laranja) e Bubble Sort (amarelo). Percebe-se que crescem de maneira
semelhante e que a funo n2 limita-os superiormente. J os algoritmos mais eficientes,
Shell Sort (verde escuro), Heap Sort (marrom), Merge Sort (azul claro) e Quicksort (verde
escuro) esto bem mais abaixo no grfico, e pode-se perceber que tambm crescem de
forma semelhante ao seu limitante superior assinttica, a funo n log 2 (n) (roxo).

Para tamanho de entrada menores, como 100, a diferena de tempo no grande, como
era de se esperar, j que esses algoritmos vo realmente tender ao sua complexidade
assinttica para valores grandes de entrada, como visto em sala de aula e nos
experimentos.