• Nenhum resultado encontrado

04.AED.Ordenação

N/A
N/A
Protected

Academic year: 2021

Share "04.AED.Ordenação"

Copied!
48
0
0

Texto

(1)

Prof. Rodrigo L. S. Silva, D.Sc. Prof. Stênio Sã R. F. Soares, D.Sc.

Métodos de ordenação

(2)

2

O que será visto nesta aula?

O que são métodos de ordenação.

Classificação dos métodos.

Funcionamento de alguns métodos

(3)

3

Métodos de Ordenação

Métodos de ordenação tem por objetivo

rearranjar um conjunto de objetos em uma

ordem crescente ou decrescente.

Tem como objetivo facilitar a recuperação dos

itens do conjunto.

Ordenar objetos é uma atividade relevante e

fundamental em diversas aplicações da

computação.

(4)

4

Chaves

A comparação é feita através de algum tipo de

chave.

Em vetores simples, os próprios elementos do

vetor (sejam eles números ou caracteres) são

as chaves.

Em problemas mais complexos, usualmente a

chave é um campo numérico dentro de uma

estrutura ou classe (como um “CPF” em uma

estrutura “pessoa” por exemplo).

(5)

5

Classificação:

Quanto ao conjunto de registros

Ordenação Interna: o conjunto de registros

cabe todo na memória principal.

Ordenação Externa: o conjunto de registros não

cabe completamente em memória principal, e

deve ser armazenado em disco ou fita.

(6)

6

Ordenação Interna

Medidas de complexidade levam em conta:

 O número de comparação entre as chaves  O número de trocas entre os itens

São classificados em dois tipos:

 Métodos Simples: mais recomendados para

conjuntos pequenos de dados. Usam mais comparações, mas produzem códigos menores e mais simples;

 Métodos Eficientes: adequados para conjuntos

maiores de dados. Usam menos comparações, porém produzem códigos mais complexos e com muitos detalhes.

(7)

7

Alguns Algoritmos...

Ordenação por Seleção (Selection Sort) Ordenação por Inserção (Insertion Sort)

Ordenação por Seleção e Troca (Bubble Sort)  Ordenação por Inserção através de

incrementos decrescentes (ShellSort)

Ordenação por Particionamento (QuickSort) Ordenação de Árvores (HeapSort)

Métodos Simples

Métodos Eficientes

(8)

8

Ordenação por Seleção

(Selection Sort)

Um dos algoritmos mais simples.

Mais recomendado para conjuntos pequenos

Procedimento:

 Selecione o menor item do conjunto e troque-o

com o item que está na posição i.

 Repita essas operações com os demais itens até

(9)

9

Ordenação por Seleção

(Selection Sort)

O R D E N A

1 2 3 4 5 6

(10)

10

Ordenação por Seleção

(Selection Sort)

O R D E N A

1 2 3 4 5 6

Chaves Iniciais:

(11)

11

Ordenação por Seleção

(Selection Sort)

O R D E N A 1 2 3 4 5 6 Chaves Iniciais: i=1: A R D E N O A D R E N O i=2:

(12)

12

Ordenação por Seleção

(Selection Sort)

O R D E N A 1 2 3 4 5 6 Chaves Iniciais: i=1: A R D E N O A D R E N O A D E R N O i=2: i=3:

(13)

13

Ordenação por Seleção

(Selection Sort)

O R D E N A 1 2 3 4 5 6 Chaves Iniciais: i=1: A R D E N O A D R E N O A D E R N O A D E N R O i=2: i=3: i=4:

(14)

14

Ordenação por Seleção

(Selection Sort)

O R D E N A 1 2 3 4 5 6 Chaves Iniciais: i=1: A R D E N O A D R E N O A D E R N O A D E N R O A D E N O R i=2: i=3: i=4: i=5:

(15)

15

Ordenação por Seleção

(Selection Sort)

Vantagem

 Um dos algoritmos mais simples de se

implementar.

Desvantagem

 É um algoritmo lento ( O(n2) ) se comparado a

(16)

16

Ordenação por Inserção

(Insertion Sort)

Procedimento

1. Os elementos são divididos em uma seqüência de

destino a1, ..., ai-1 e em uma seqüência fonte ai, ..., an.

2. Em cada passo, a partir de i =2, o i-ésimo item da

sequência fonte é retirado e transferido para a seqüência destino na posição adequada.

Pode-se utilizar um único vetor para fazer todo

(17)

17

Ordenação por Inserção (Insertion

Sort)

A O R D E N 6 2 3 4 5 1 Chaves Iniciais O R A O R D E N i = 2

(18)

18

Ordenação por Inserção (Insertion

Sort)

A O R D E N 6 2 3 4 5 1 i = 3 O R D E N A Chaves Iniciais O R A O R D E N i = 2

(19)

19

A O O R E N A D O R E N

i = 4

Ordenação por Inserção (Insertion

Sort)

A O R D E N 6 2 3 4 5 1 i = 3 O R D E N A Chaves Iniciais O R A O R D E N i = 2

(20)

20

A O O R E N A D O R E N

i = 4

Ordenação por Inserção (Insertion

Sort)

A O R D E N 6 2 3 4 5 1 i = 3 O R D E N A A D E O R N i = 5 Chaves Iniciais O R A O R D E N i = 2

(21)

21

A O O R E N A D O R E N

i = 4

Ordenação por Inserção (Insertion

Sort)

A O R D E N 6 2 3 4 5 1 i = 3 O R D E N A A D E O R N i = 5 A D E N O R i = 6 Chaves Iniciais O R A O R D E N i = 2

(22)

22

A O O R E N A D O R E N

i = 4

Ordenação por Inserção (Insertion

Sort)

A O R D E N 6 2 3 4 5 1 i = 3 O R D E N A A D E O R N i = 5 A D E N O R i = 6 R A D E N O Res.: Chaves Iniciais O R A O R D E N i = 2

(23)

23

Ordenação por Inserção (Insertion

Sort)

 A inserção do item em uma posição adequada na

sequência de destino é realizada com a movimentação das chaves maiores para a direita e então é feita a inserção do item na posição vazia.

 Vantagens:

 O número mínimo de comparações e movimentos ocorre

quando os itens já estão originalmente ordenados.

 O número máximo ocorre quando os itens estão

originalmente em ordem reversa, o que indica um comportamento natural para o algoritmo.

(24)

24

Ordenação por Seleção e Troca

(

Bubblesort ou método da Bolha)

Princípio:

1. As chaves Item[1].Chave e Item[2].Chave são

comparadas e trocadas se estiverem fora de ordem;

2. Repete-se o processo de comparação e troca com

Item[2] e Item[3], Item[3] e Item[4], ...

Curiosidade: Por que este algoritmo é chamado

de BubbleSort?

 Se o vetor a ser ordenado for colocado na vertical,

com Item[n] em cima e Item[1] embaixo, durante cada passo o menor elemento “sobe” até encontrar um elemento maior ainda, como se uma bolha subisse dentro de um tubo de acordo com sua densidade.

(25)

25

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7

(26)

26

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7

44 55 12 42 94 18 6 67

(27)

27

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7

44 55 12 42 94 18 6 67

44 12 42 55 18 6 67 94

(28)

28

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7

44 55 12 42 94 18 6 67

44 12 42 55 18 6 67 94

12 42 44 18 6 55 67 94

(29)

29

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7 44 55 12 42 94 18 6 67 44 12 42 55 18 6 67 94 12 42 44 18 6 55 67 94 12 42 18 6 44 55 67 94 12 18 6 42 44 55 67 94

(30)

30

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7 44 55 12 42 94 18 6 67 44 12 42 55 18 6 67 94 12 42 44 18 6 55 67 94 12 42 18 6 44 55 67 94 12 18 6 42 44 55 67 94 12 6 18 42 44 55 67 94

(31)

31

Ordenação pelo Método da Bolha

0 1 2 3 4 5 6 7 44 55 12 42 94 18 6 67 44 12 42 55 18 6 67 94 12 42 44 18 6 55 67 94 12 42 18 6 44 55 67 94 12 18 6 42 44 55 67 94 12 6 18 42 44 55 67 94 6 12 18 42 44 55 67 94

(32)

32

Observações

 Método extremamente lento: só faz comparações

entre posições adjacentes

 É o método mais ineficiente entre os simples

 Melhor caso: vetor já ordenado

(33)

33

ShellSort

Método proposto por Shell em 1959.

É uma extensão da ordenação por inserção.

Utiliza a ordenação por inserção sobre

subsequências periódicas da entrada para

produzir um algoritmo de ordenação mais rápido.

O Shellsort contorna o problema permitindo

trocas de registros que estão distantes um do

outro. Os itens que estão separados h posições são

rearranjados de forma que todo h-ésimo item leva

a uma sequência ordenada.

(34)

34

Ordenação por Inserção

A O R D E N 6 2 3 4 5 1 Chaves Iniciais

(35)

35

Ordenação por Inserção

A O R D E N 6 2 3 4 5 1 Chaves Iniciais h = 4

(36)

36

Ordenação por Inserção

A O R D E N 6 2 3 4 5 1 h = 4 N A D E O R Chaves Iniciais

(37)

37

Ordenação por Inserção

A O R D E N 6 2 3 4 5 1 h = 4 N A D E O R Chaves Iniciais h = 2

(38)

38

Ordenação por Inserção

A O R D E N 6 2 3 4 5 1 h = 4 N A D E O R Chaves Iniciais R D A N E O h = 2

(39)

39

Ordenação por Inserção

A O R D E N 6 2 3 4 5 1 h = 4 N A D E O R Chaves Iniciais R D A N E O h = 2 R A D E N O h = 1

(40)

40

Entendendo o Shellsort

1. Na primeira passada (h=4), o item de valor O (posição

1) é comparado com o item de valor N (posição 5) e como o último é menor, são trocados.

 O item R é a seguir comparado e trocado com A (posições

2 e 6) seguindo a mesma lógica.

2. Na segunda passada (h=2), N, D e O, nas posições 1, 3

e 5 são rearrumados para resultar em D, N e O nestas mesmas posições; da mesma forma, A, E e R, nas posições 2, 4 e 6 são comparados e mantidos nos seus lugares por já estarem na ordem correta.

3. A última passada (h=1) corresponde ao algoritmo de

(41)

41

Quicksort

O Quicksort é um dos mais populares

algoritmos eficientes para ordenação interna.

Princípio

1. Dividir o problema de ordenar um conjunto de n

itens em dois problemas menores.

2. Ordenar independentemente os problemas

menores.

3. Combinar os resultados para produzir a solução

(42)

42

Partição

A parte mais delicada desse método se refere

à divisão da partição

Deve-se rearranjar o vetor na forma A[Esq..Dir]

através da escolha arbitrária de um item x do vetor chamado pivô.

Ao final, o vetor A deverá ter duas partes, uma

esquerda com chaves menores ou iguais que x e a direita com valores de chaves maiores ou iguais que x.

(43)

43

Algoritmo Quicksort: Partição

Procedimento do Algoritmo QuickSort

1. Escolher arbitrariamente um item do vetor e colocar

este valor em x

2. Percorrer o vetor a partir da esquerda até que um

item A[i] x é encontrado; da mesma maneira, percorrer o vetor a partir da direita até que um item

A[j] x é encontrado;

3. Como os itens A[i] e A[j] não estão na ordem correta

no vetor final, eles devem ser trocados

4. Continuar o processo até que os índice i e j se cruzem

(44)

44

Funcionamento do Quicksort:

Partição

Ao final do processo, o vetor A[Esq..Dir] está

particionado de tal forma que:

Os itens em A[Esq], A[Esq+1],..., A[j] são menores

ou iguais a x

Os itens em A[i], A[i+1],..., A[Dir] são maiores ou

(45)

45

Exemplo de Partição

A O R D E N 6 2 3 4 5 1 i = 2 A R D E N O O A D R E N i = 3 Chaves Iniciais D

O pivô é escolhido como sendo A[(i+j) div 2]

Inicialmente, i=1 e j=6, e então x=A[3] = D

A varredura a partir da posição 1 pára no item O e a varredura a

partir da posição 6 pára em A, sendo os dois itens trocados

A varredura a partir da posição 2 pára em R e a varredura a partir

da posição 5 pára no item D, e então os dois itens são trocados

Neste instante i e j se cruzam (i=3 e j=2), o que encerra o processo

(46)

46

Procedimento (após Partição)

A O R D E N 6 2 3 4 5 1 i = 1 A D R E N O O E R N i = 3 O N R i = 4 R O i = 5 Chaves Iniciais A D i = 2 R A D E N O i = 6

(47)

47

Análise

Melhor caso: quando cada partição divide o

arquivo em duas partes iguais

Pontos fracos:

 A implementação do algoritmo é mais

complicada do que os algoritmos vistos anteriormente.

Entretanto, desde que se tenha uma

implementação robusta o suficiente, o

Quicksort é uma boa opção para problemas

(48)

Leitura obrigatória

Livro do Cormen (Algoritmos)

Referências

Documentos relacionados

Caso a busca tenha que continuar, podemos proceder exatamente da mesma maneira: verificamos o item existente no meio da metade escolhida e se ele ainda não for aquele que

Lote nº 3 – Onde se lê “destinado a instalação agrícola, deverá ler-se, destinado a actividade económica / industrial. Os Senhores Vereadores do PS votam

Cascas de banana foram caracterizadas por espectroscopia de infravermelho com transformada de Fourier e microscopia eletrônica de varredura, e investigadas como biossorvente de

Portanto, a aplicação deste herbicida para controle de plantas daninhas em lavouras de milho quando a cultura se encontrar nos estádios de desenvolvimento a partir de seis

Métodos como jateamento de pontos e jato de tinta produzem pontos redondos e, de acordo com os padrões para códigos, esses pontos não devem ser maiores que 105% ou menores que 60%

Imprime a mensagem "o mundo parou" sempre que a altura mínima for menor que zero, e não somente na entrada (-1) como foi pedido.. Ao tentar descobrir se o céu está

Elegância, fiabilidade, poupança de energia e alto desempenho: a mais refinada tradição do café espresso italiano evolui nas atraentes formas da M100, a nova máquina

• Infra-estruturas Públicas: Redes Rodoviárias; Condutas Distribuidoras de Água; Coletores de Águas Residuais; Condutas de Adução de Água; Estações Elevatórias de