6. Ordenação comShellSort
09:21
Problema com o algoritmo de ordenação por inserção:
Troca itens adjacentes para determinar o ponto de inserção.
São efetuadas 𝑛 − 1 comparações e movimentações quando
o menor item está na posição mais à direita no vetor.
Permitindo trocas de registros distantes um do outro.
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
7. Ordenação comShellSort
09:21
Os itens separados de ℎ posições são rearranjados
Todo h-ésimo item leva a uma sequência ordenada
Tal sequência é dita estar h-ordenada
Quando ℎ = 1 shellsort corresponde ao algoritmo de
inserção
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
8. Ordenação comShellSort
09:34
Como escolher o valor de ℎ:
Sequência para ℎ:
ℎ = 3ℎ + 1
Knuth (1973, p. 95) mostrou experimentalmente que esta sequência é
difícil de ser batida por mais de 20% em eficiência
A sequência para ℎ corresponde a:
1, 4, 13, 40, 121, 364, 1.093, 3.280, . . .
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
9. Ordenação comShellSort
09:34
Tem como objetivo aumentar o passo de movimento dos
elementos ao invés das posições adjacentes (passo = 1).
Consiste em classificar sub-arquivos do original;
Esses sub-arquivos contêm todo k-ésimo elemento do arquivo original;
O valor de 𝑘 é chamado de incremento;
Ex.: se 𝑘 = 5 , o sub-arquivo consistindo dos elementos
𝑥[0], 𝑥[5], 𝑥[10], ... é classificado primeiro.
Cinco sub-arquivos, cada um contendo um quinto dos elementos do
arquivo original, são classificados dessa maneira.
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
10. Ordenação comShellSort
09:34
Define-se um novo incremento menor que o anterior;
Gera-se novos sub-arquivos;
Aplica-se novamente o método da inserção nesses novos sub-arquivos.
E assim sucessivamente para novos valores de 𝑘, até 𝑘 = 1.
Sequência de incrementos (definida previamente):
ℎ1, ℎ2, … , ℎ 𝑡
Com: ℎ 𝑡 = 1 𝑒 ℎ𝑖 + 1 < ℎ𝑖.
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
20. Ordenação comShellSort
09:34 Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
Basicamente o algoritmo passa várias vezes pela
lista dividindo o grupo maior em menores
Esta divisão é determinada pelo valor calculado do
salto: 𝐾 = 𝑘/2
Nos grupos menores é aplicado o método da
ordenação por inserção
21. Ordenação comShellSort
09:34
A razão da eficiência do algoritmo ainda não é conhecida
Ninguém ainda foi capaz de analisar o algoritmo.
A análise contém problemas matemáticos muito difíceis.
A começar pela própria sequência de incrementos
O que se sabe é que cada incremento não deve ser múltiplo
do anterior
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
22. Ordenação comShellSort
09:34
Vantagens:
Ótima opção para arquivos de tamanho moderado
Sua implementação é simples e requer uma
quantidade de código pequena
Complexidade 𝑂(𝑛 log 𝑛)
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)
23. Ordenação comShellSort
09:34
Desvantagens:
O tempo de execução do algoritmo é
sensível à ordem inicial do arquivo
O método não é estável
Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)