5952011
5. Algoritmos de Ordenação
https://www.youtube.com/watch?v=kPRA0W1kECg
30
28 28 28 28 28 28 28 28 28
27
25
25 24
23
22
Comparações
20
17
16
15 15
15 14 14
13 13
12 12
11 11
10
7 7
0
Inserção Direta Inserção Binária Seleção Direta Borbulhamento Agitação Fusão Quicksort Heapsort
Introdução à Computação II – 5952011 5
Quadro Geral:
5.7. Considerações Sobe o
Movimentações Problema de Ordenação
90
45,56,12,43,95,19,8,67
84 84
8,12,19,43,45,56,67,95
95,67,56,45,43,19,12,8
80
19,12,8,45,43,56,67,95
70
60 57 58 58
52
Movimentações
49
50
45 45
42
40 38
36 35
32 32 32 32
29
30
25 26
21 21 21 21 21 22
20 18
14
12 12
10
0 0
0
Inserção Direta Inserção Seleção Direta Borbulhamento Agitação Fusão Quicksort Heapsort
Binária
Introdução à Computação II – 5952011 6
5.7. Considerações Sobe o
Problema de Ordenação
• Análise dos Algoritmos de Ordenação
[Ziviani, 2004]: Tempo total real para ordenar arranjos de registros (os
valores estão normalizados de acordo com o tempo do método que foi mais
rápido) 500 5000 10000 30000
Registros em Inserção Direta 11,3 87 161 -
ordem Seleção 16,2 124 228 -
aleatória ShellSort 1,2 1,6 1,7 2
Heapsort 1,5 1,6 1,6 1,6
Quicksort 1 1 1 1
Inserção
– Interessante para arquivos com menos de 20 elementos
– Estável
– Implementação simples
– Para arquivos ordenados, é O(n)
Seleção
– Números de movimentação é O(n)
» Deve ser usado para arquivos com registros grandes
(estruturas com muitos elementos), desde que não exceda
1000 elementos
Quicksort
– Vantagens
» É o algoritmo mais eficiente para uma grande variedade
de situações
» Tempo O(n log n ) no caso médio
» Fatores constantes (operações primitivas) pequenos,
quando comparado com outros algoritmos O(n log n )
– Desvantagens
» É recursivo, ou seja, utiliza memória adicional
» Seu desempenho de tempo no pior caso é O (n2)
Introdução à Computação II – 5952011 9
5.7. Considerações Sobe o
Problema de Ordenação
• Análise dos Algoritmos de Ordenação
Heapsort
– Método eficiente, mas cerca de duas vezes mais lento que
o Quicksort
– No entanto, não utiliza memória adicional
– Tempo O(n log n ), qualquer que seja a ordem inicial dos
elementos
» Aplicações que devem ser executadas em tempo
praticamente igual podem utilizar Heapsort
Sim Não
Sabendo que (pois pelo menos N/2 termos do produto são maiores
que N/2)
N! = N(N-1)(N-2)...(2)(1) (N/2)N/2
Então log2(N!) (N/2)log2(N/2) = O(N log2 N)