28
# Pesquisa e Ordenação # Aula 08 Métodos de Ordenação (ShellSort) Prof. Leinylson Fontinele Pereira

Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Embed Size (px)

Citation preview

Page 1: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

# Pesquisa e Ordenação #Aula 08 – Métodos de Ordenação

(ShellSort)

Prof. Leinylson Fontinele Pereira

Page 2: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Na aula anterior...

Métodos de Ordenação# BucketSort

09:21 Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 3: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

O que vamos aprender?

Métodos de Ordenação# ShellSort

09:21 Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 4: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Vamos começar?

09:21 4Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 5: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

09:21 5

Ordenação comShellSort

Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 6: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

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 quandoo 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)

Page 7: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

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 deinserção

Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 8: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

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)

Page 9: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34

Tem como objetivo aumentar o passo de movimento doselementos 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 doarquivo original, são classificados dessa maneira.

Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 10: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

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)

Page 11: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 12: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 13: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:21Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 14: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 15: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 16: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 17: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Criando o histograma

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 18: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Criando o histograma

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 19: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 20: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Basicamente o algoritmo passa várias vezes pelalista dividindo o grupo maior em menores

Esta divisão é determinada pelo valor calculado dosalto:𝐾 = 𝑘/2

Nos grupos menores é aplicado o método daordenação por inserção

Page 21: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

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últiplodo anterior

Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 22: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

09:34

Vantagens: Ótima opção para arquivos de tamanho moderado

Sua implementação é simples e requer umaquantidade de código pequena

Complexidade𝑂(𝑛 log 𝑛)

Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 23: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Ordenação com ShellSort

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)

Page 24: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Concluindo...

09:34 24Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 25: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Nesta aula aprendemos...

09:34 Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Métodos de Ordenação# ShellSort

Page 26: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Na próxima aula veremos...

09:34 Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Métodos de Ordenação# RadixSort

Page 27: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Material: https://sites.google.com/site/leinylsonnassau

09:34

Material baseado nas aulas de:

Linguagem C Descomplicada , Dr. André R. Backes

Projeto de Algoritmos, Capítulo 4 – Nívio Ziviani

Métodos de Ordenação, João Luís Garcia Rosa

Pesquisa e Ordenação: Aula 08 – Métodos de Ordenação (ShellSort)

Page 28: Pesquisa e Ordenação - Aula 08 - Métodos de Ordenação (Shell sort)

Alguma Dúvida?

09:34

Até a próxima aula...

[email protected]