Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos de ordenação:
Inserção e Shellsort
Natália Batista
nataliabatista@cefetmg.br
1º semestre/ 2022
1. Ordenação por inserção
Algoritmo utilizado pelo jogador de cartas:
As cartas são ordenadas da esquerda para
direita uma por uma.
O jogador escolhe a segunda carta e verifica
se ela deve ficar antes ou na posição que está.
Depois a terceira carta é classificada,
deslocando-a até sua correta posição.
O jogador realiza esse procedimento até
ordenar todas as cartas
Fonte:http://cae.ucb.br/conteudo/programar/
labor1/new_ordenacaoepesquisa.html
2
1. Ordenação por inserção
Algoritmo:
Em cada passo a partir de i=2 faça:
Selecione o i-ésimo item da sequência fonte.
Coloque-o no lugar apropriado na sequência destino de
acordo com o critério de ordenação.
3
1. Ordenação por inserção
O método é ilustrado abaixo:
5
1. Ordenação por inserção
6
1. Ordenação por inserção
Sentinela: na posição zero do vetor é colocado o
próprio registro em consideração.
0 1 2 3 4 5 6
Chaves iniciais O R D E N A
i=2 R O R D E N A
i=3 D D O R E N A
i=4 E D E O R N A
i=5 N D E N O R A
i=6 A A D E N O R
7
1. Ordenação por inserção
8
1. Ordenação por inserção
Melhor caso: vetor já está ordenado.
Ci (n) = 1
0 1 2 3 4 5 6
Chaves iniciais A D E N O R
i=2 D A D E N O R
i=3 E A D E N O R
i=4 N A D E N O R
i=5 O A D E N O R
i=6 R A D E N O R
9
1. Ordenação por inserção
Pior caso: vetor em ordem decrescente.
Ci (n) = i
0 1 2 3 4 5 6
Chaves iniciais R O N E D A
i=2 O O R N E D A
i=3 N N O R E D A
i=4 E E N O R D A
i=5 D D E N O R A
i=6 A A D E N O R
10
1. Ordenação por inserção
Caso médio: assume que todas as
permutações de n são igualmente prováveis.
11
1. Ordenação por inserção
O anel mais externo (for) realiza n-1 iterações:
12
1. Ordenação por inserção
13
1. Ordenação por inserção
M
O
V
I
M
E
N
Ci(n)-1: subtrai 1
T pois faz uma
A comparação a
Ç
Õ mais para sair
E do while.
S
14
1. Ordenação por inserção
O número total de movimentações é calculado por:
15
1. Ordenação por inserção
Exemplo de pior caso:
16
1. Ordenação por inserção
17
1. Ordenação por inserção
18
2. Shellsort
Proposto por Shell em 1959.
É uma extensão do algoritmo de ordenação por
inserção.
Problema com o algoritmo de ordenação por inserção:
Troca itens adjacentes para determinar o ponto de inserção.
São efetuadas n − 1 comparações e movimentações para
encontrar ponto de inserção quando o menor item está na
posição mais à direita no vetor.
O método de Shell contorna este problema permitindo
trocas de registros distantes um do outro.
19
2. Shellsort
20
2. Shellsort
Exemplo de utilização:
Posições 1 e 5 / 2 e 6
Posições 1, 3 e 5 / 2, 4 e 6
Corresponde ao inserção.
21
2. Shellsort
Como escolher o valor de h:
h(s) = 1, para s = 1.
h(s) = 3*h(s - 1) + 1, para s > 1.
23
2. Shellsort
24
2. Shellsort
25
2. Shellsort
26
2. Shellsort
27
2. Shellsort
Vantagens:
Shellsort é uma ótima opção para arquivos de
tamanho moderado (± 10000 itens).
Sua implementação é simples e requer uma
quantidade de código pequena.
Desvantagens:
O tempo de execução do algoritmo é sensível à
ordem inicial do arquivo.
O método não é estável.
28
Referências
Ziviani, N. Projeto de algoritmos: com
implementações em Java e C++. 3 ed. Editora
Cengage Learning, 2007.
Goodrich, M. T. e Tamassia, R. Estruturas de
Dados & Algoritmos. Editora Bookman, 2013.
Loureiro, A. A. F. Projeto e Análise de Algoritmos:
Análise de Complexidade. Notas de aula, 2010.
Menotti, D. Ordenação. Notas de aula, 2009.
29