• Nenhum resultado encontrado

Algoritmos de ordenação: Inserção e Shellsort

N/A
N/A
Protected

Academic year: 2022

Share "Algoritmos de ordenação: Inserção e Shellsort"

Copied!
29
0
0

Texto

(1)

Algoritmos de ordenação:

Inserção e Shellsort

Algoritmos e Estruturas de Dados I

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS

Slides adaptados dos slides do livro texto (Ziviani) e dos slides de aula dos professores Davi Menotti (DECOM/UFOP) e Antônio Alfredo Ferreira Loureiro (DCC/UFMG).

(2)

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

(3)

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.

(4)

1. Ordenação por inserção

O método é ilustrado abaixo:

(5)

1. Ordenação por inserção

 Considerações sobre o algoritmo:

O processo de ordenação pode ser terminado pelas condições:

Um item com chave menor que o item em consideração é encontrado.

O final da sequência destino é atingido à esquerda.

Solução: utilizar um registro sentinela na posição

zero do vetor.

(6)

1. Ordenação por inserção

(7)

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

(8)

1. Ordenação por inserção

 Seja C(n) a função que conta o número de comparações.

 No anel mais interno (while), na i-ésima

iteração, o valor de C

i

é:

(9)

1. Ordenação por inserção

 Melhor caso: vetor já está ordenado.

 C

i

(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

(10)

1. Ordenação por inserção

 Pior caso: vetor em ordem decrescente.

 C

i

(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

(11)

1. Ordenação por inserção

 Caso médio: assume que todas as

permutações de n são igualmente prováveis.

(12)

1. Ordenação por inserção

O anel mais externo (for) realiza n-1 iterações:

Logo, o número de comparações é igual a:

(13)

1. Ordenação por inserção

 Seja M (n) a função que conta o número de movimentações de registros.

 O número de movimentações na i-ésima

iteração é:

(14)

1. Ordenação por inserção

Ci(n)-1: subtrai 1 pois faz uma comparação a

mais para sair

M O V I M

E N T A Ç

(15)

1. Ordenação por inserção

O número total de movimentações é calculado por:

(16)

1. Ordenação por inserção

Exemplo de pior caso:

(17)

1. Ordenação por inserção

 O número mínimo de comparações e movimentos ocorre quando os itens estão originalmente em ordem.

Para arquivos já ordenados o algoritmo descobre, a um custo O(n), que cada item já está no seu lugar.

 O número máximo ocorre quando os itens

estão originalmente na ordem reversa.

(18)

1. Ordenação por inserção

 É o método a ser utilizado quando o arquivo está “quase” ordenado.

 É um bom método quando se deseja adicionar uns poucos itens a um arquivo ordenado, pois o custo é linear.

 O algoritmo de ordenação por inserção é

estável.

(19)

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

(20)

2. Shellsort

 Itens que estão separados h posições são rearranjados de tal forma que todo h-ésimo item leva a uma sequência ordenada.

 Ordenação por inserção através de

incrementos decrescentes.

(21)

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.

(22)

2. Shellsort

Como escolher o valor de h:

h(s) = 1, para s = 1.

h(s) = 3*h(s - 1) + 1, para s > 1.

A sequência para h corresponde a 1, 4, 13, 40, 121, 364, 1.093, 3.280, ...

Knuth (1973) mostrou experimentalmente que esta

(23)

2. Shellsort

(24)

2. Shellsort

 Quando h = 1, o Shellsort corresponde ao

algoritmo de inserção.

(25)

2. Shellsort

 Porque o Shellsort é mais eficiente?

A razão da eficiência do algoritmo ainda não é conhecida.

Sabe-se que cada incremento não deve ser múltiplo do anterior.

Várias sequências para h foram experimentadas.

(26)

2. Shellsort

 A implementação do Shellsort não utiliza registros sentinelas.

 Seriam necessários h registros sentinelas,

uma para cada h-ordenação.

(27)

2. Shellsort

 Conjecturas referente ao número de

comparações para a sequência de Knuth:

(28)

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.

(29)

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.

Referências

Documentos relacionados

 Ambos os sistemas de medição foram Ambos os sistemas de medição foram recentemente calibrados e estão operando em recentemente calibrados e estão operando em

• Se vários itens têm a mesma chave, há vários resultados possíveis para a ordenação1. • Uma ordenação que conserva a ordem inicial dos itens cujas chaves são iguais é

Para completar o pesadelo, o Ministro de Minas e Energia é um rapaz de 33 anos, formado em administração de empresas pela FAAP, sem qualquer especialização na

A declaração de incompetência (arts. A incompetência absoluta deve ser declarada de ofício e pode ser alegada, em qualquer tempo e grau de jurisdição, independentemente de

Slides adaptados dos slides do livro texto (Ziviani) e dos slides de aula dos professores Davi Menotti (DECOM/UFOP) e Antônio Alfredo Ferreira Loureiro (DCC/UFMG)...

Ao considerar a importância do fenômeno do uso de ál- cool na contemporaneidade e a necessidade de identifica- ção de fatores protetores, como parece ser o caso da espiri-

Ordenação digital (=radix sorting) ordena chaves (sobre um alfabeto) agrupando-as conforme os símbolos (do alfabeto) em determinadas posições, frequentemente usando ordenação

8- Se o usuário não aparar o esforço da Motosserra, há um risco de que a motosserra seja empurrada de tal modo para trás que o setor de risco de retrocesso da lâmina será o