Você está na página 1de 333

Prof.

Max do Val Machado


Unidade IV:
Ordenao Interna
Instituto de Cincias Exatas e Informtica
Curso de Cincia da Computao
Ordenao Interna
Muitas aplicaes requerem dados de forma ordenada
Entrada: array com n elementos
A ordenao dita Interna quando a lista de elementos cabe na memria
principal, caso contrrio, dita Externa
Chave de Pesquisa: Atributo utilizado para ordenar os registros
Algoritmos e Estruturas de Dados II (2) Prof. Max do Val Machado
Introduo
Ordenao Interna
Operaes fundamentais: comparao e movimentao entre elementos
do array
O limite inferior em termos do nmero de comparaes para a ordenao
interna (n lg(n))
Logo, a complexidade tima para a ordenao interna em nmero de
comparaes do pior e do caso mdio (n lg(n))
Vrios algoritmos de ordenao interna alcanam esse limite
Algoritmos e Estruturas de Dados II (3) Prof. Max do Val Machado
Anlise dos Algoritmos de Ordenao Interna
Ordenao Interna
Um algoritmo dito estvel se depois da execuo, os elementos com a
mesma chave mantiverem a ordem original
No exemplo abaixo, a ordem dos elementos azul, vermelho, verde e
marrom e amarelo a mesma
Antes:
9 5 1 4 5 0 7 5 2 8 6 3 5 5
Depois:
0 1 2 3 4 5 5 5 5 5 6 7 8 9
Algoritmos e Estruturas de Dados II (4) Prof. Max do Val Machado
Algoritmos Estveis vs. No Estveis
Ordenao Interna
Funcionamento Bsico:
Procure o menor elemento do array
Troque a posio do menor elemento com o primeiro
Volte ao primeiro passo e considere o array a partir da prxima
posio
Algoritmos e Estruturas de Dados II (5) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (6) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (7) Prof. Max do Val Machado
Algoritmo de Seleo
Menor
elemento
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (8) Prof. Max do Val Machado
Algoritmo de Seleo
Trocando a posio do menor
elemento com o primeiro
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 115 30 63 47 101
Algoritmos e Estruturas de Dados II (9) Prof. Max do Val Machado
Algoritmo de Seleo
Parte
ordenada
Parte a ser ordenada
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 115 30 63 47 101
Algoritmos e Estruturas de Dados II (10) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 115 30 63 47 101
Algoritmos e Estruturas de Dados II (11) Prof. Max do Val Machado
Algoritmo de Seleo
Menor
elemento
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 115 63 47 101
Algoritmos e Estruturas de Dados II (12) Prof. Max do Val Machado
Algoritmo de Seleo
Trocando a posio do menor
elemento com o primeiro
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 115 63 47 101
Algoritmos e Estruturas de Dados II (13) Prof. Max do Val Machado
Algoritmo de Seleo
Menor
elemento
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 47 63 115 101
Algoritmos e Estruturas de Dados II (14) Prof. Max do Val Machado
Algoritmo de Seleo
Trocando a posio do menor
elemento com o primeiro
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 47 63 115 101
Algoritmos e Estruturas de Dados II (15) Prof. Max do Val Machado
Algoritmo de Seleo
Menor
elemento
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 47 63 115 101
Algoritmos e Estruturas de Dados II (16) Prof. Max do Val Machado
Algoritmo de Seleo
Trocando a posio do menor
elemento com o primeiro
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 47 63 115 101
Algoritmos e Estruturas de Dados II (17) Prof. Max do Val Machado
Algoritmo de Seleo
Menor
elemento
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (18) Prof. Max do Val Machado
Algoritmo de Seleo
Trocando a posio do menor
elemento com o primeiro
Ordenao Interna
Exemplo onde o menor elemento est de vermelho e a parte ordenada
est de azul
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (19) Prof. Max do Val Machado
Algoritmo de Seleo
O algoritmo terminou? Por que?
Ordenao Interna
Algoritmo em C like
Ver cdigo em: fonte/unidade04/Selecao.java
Algoritmos e Estruturas de Dados II (20) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Algoritmos e Estruturas de Dados II (21) Prof. Max do Val Machado
Algoritmo de Seleo
Temos somente um
comando de comparao
entre elementos do array
Ordenao Interna
Anlise do nmero de comparaes:
Algoritmos e Estruturas de Dados II (22) Prof. Max do Val Machado
Algoritmo de Seleo
Executamos o lao interno
(n (i + 1)) vezes
Ou seja, (n i 1) vezes
Ordenao Interna
Anlise do nmero de comparaes:
Algoritmos e Estruturas de Dados II (23) Prof. Max do Val Machado
Algoritmo de Seleo
Exemplo: n = 5
Para i = 0, os valores de j sero 1, 2, 3 e 4 (5 1 0) = 4 vezes
Para i = 1, os valores de j sero 2, 3 e 4 (5 1 1) = 3 vezes
Para i = 2, os valores de j sero 3 e 4 (5 1 2) = 2 vezes
Para i = 3, o valor de j ser 4 (5 1 3) = 1 vez
Ordenao Interna
Anlise do nmero de comparaes:
Algoritmos e Estruturas de Dados II (24) Prof. Max do Val Machado
Algoritmo de Seleo
Executamos o lao externo
(n 1) vezes
Ou seja, os valores de i
sero 0, 1, 2 e 3
Ordenao Interna
Anlise do nmero de comparaes:
Como o lao interno executado (n 1 i) vezes e o externo (n 1)
vezes, logo:
Algoritmos e Estruturas de Dados II (25) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Como o lao interno executado (n 1 i) vezes e o externo (n 1)
vezes, logo:
Algoritmos e Estruturas de Dados II (26) Prof. Max do Val Machado
Algoritmo de Seleo
Resoluo de somatrios
Livro do Knuth
Livro do Cormem
Ordenao Interna
Anlise do nmero de comparaes:
Como o lao interno executado (n 1 i) vezes e o externo (n 1)
vezes, logo:
= (n-1-0) + (n-1-1) + (n-1-2) + ... + 1
i = 0 i = 1 i = 2 i = n 2
Algoritmos e Estruturas de Dados II (27) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Assim, temos:
i = 0 i = 1 i = 2 i = n 2
Algoritmos e Estruturas de Dados II (28) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Sendo,
Podemos colocar da forma abaixo?
Algoritmos e Estruturas de Dados II (29) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Sendo,
Podemos colocar da forma abaixo?
E assim?
Algoritmos e Estruturas de Dados II (30) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Em matemtica discreta, vocs vo aprender que:
Algoritmos e Estruturas de Dados II (31) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Agora, podemos fazer as duas substituies abaixo, certo?
Algoritmos e Estruturas de Dados II (32) Prof. Max do Val Machado
Algoritmo de Seleo
n * (n-1) - (n-1)
Ordenao Interna
Anlise do nmero de comparaes:
Agora, podemos fazer as duas substituies abaixo, certo?
Logo:
Algoritmos e Estruturas de Dados II (33) Prof. Max do Val Machado
Algoritmo de Seleo
n * (n-1) - (n-1)
Ordenao Interna
Anlise do nmero de comparaes:
Deturpando o somatrio, podemos fazer:
Algoritmos e Estruturas de Dados II (34) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Separando o i e -1 em dois somatrios, temos:
Algoritmos e Estruturas de Dados II (35) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Resolvendo o segundo somatrio, temos:
Algoritmos e Estruturas de Dados II (36) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Simplificando (n-1) + (n-1), temos:
Algoritmos e Estruturas de Dados II (37) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Em Matemtica Discreta, vamos aprender:
Assim:
Algoritmos e Estruturas de Dados II (38) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de comparaes:
Simplificando, temos:
Finalmente:
Algoritmos e Estruturas de Dados II (39) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de movimentaes:
O lao externo realiza (n 1) trocas, ou seja, 3(n 1) movimentaes
Algoritmos e Estruturas de Dados II (40) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Anlise do nmero de movimentaes:
O lao externo realiza (n 1) trocas, ou seja, 3(n 1) movimentaes
Algoritmos e Estruturas de Dados II (41) Prof. Max do Val Machado
Algoritmo de Seleo
No algoritmo de Seleo, mais fcil
calcular o nmero de movimentaes!!!
Ordenao Interna
Concluso:
Vantagem: o nmero de movimentaes linear e isso interessante
quando os registros so "grandes
Algoritmo Estvel
Desvantagens:
(n
2
) comparaes
No h melhor caso
Algoritmos e Estruturas de Dados II (42) Prof. Max do Val Machado
Algoritmo de Seleo
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (43) Prof. Max do Val Machado
Exerccio
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (44) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (45) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (46) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (47) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 20 47
Algoritmos e Estruturas de Dados II (48) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 20 47
Algoritmos e Estruturas de Dados II (49) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 63 20 47
Algoritmos e Estruturas de Dados II (50) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 20 63 47
Algoritmos e Estruturas de Dados II (51) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 20 63 47
Algoritmos e Estruturas de Dados II (52) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 30 20 63 47
Algoritmos e Estruturas de Dados II (53) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 20 30 63 47
Algoritmos e Estruturas de Dados II (54) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 20 30 63 47
Algoritmos e Estruturas de Dados II (55) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 115 20 30 63 47
Algoritmos e Estruturas de Dados II (56) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 20 115 30 63 47
Algoritmos e Estruturas de Dados II (57) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 20 115 30 63 47
Algoritmos e Estruturas de Dados II (58) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 20 115 30 63 47
Algoritmos e Estruturas de Dados II (59) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
101 20 115 30 63 47
Algoritmos e Estruturas de Dados II (60) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 63 47
Algoritmos e Estruturas de Dados II (61) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 63 47
Algoritmos e Estruturas de Dados II (62) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 63 47
Algoritmos e Estruturas de Dados II (63) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 63 47
Algoritmos e Estruturas de Dados II (64) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 63 47
Algoritmos e Estruturas de Dados II (65) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 47 63
Algoritmos e Estruturas de Dados II (66) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 47 63
Algoritmos e Estruturas de Dados II (67) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 47 63
Algoritmos e Estruturas de Dados II (68) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Menor (Ser o nmero da bolha)
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 47 63
Algoritmos e Estruturas de Dados II (69) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 47 63
Algoritmos e Estruturas de Dados II (70) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 115 30 47 63
Algoritmos e Estruturas de Dados II (71) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 30 115 47 63
Algoritmos e Estruturas de Dados II (72) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 30 115 47 63
Algoritmos e Estruturas de Dados II (73) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 101 30 115 47 63
Algoritmos e Estruturas de Dados II (74) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (75) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (76) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (77) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (78) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (79) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Menor (Ser o nmero da bolha)
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (80) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (81) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 115 47 63
Algoritmos e Estruturas de Dados II (82) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 47 115 63
Algoritmos e Estruturas de Dados II (83) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 47 115 63
Algoritmos e Estruturas de Dados II (84) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 101 47 115 63
Algoritmos e Estruturas de Dados II (85) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 115 63
Algoritmos e Estruturas de Dados II (86) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 115 63
Algoritmos e Estruturas de Dados II (87) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 115 63
Algoritmos e Estruturas de Dados II (88) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 115 63
Algoritmos e Estruturas de Dados II (89) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 115 63
Algoritmos e Estruturas de Dados II (90) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 115 63
Algoritmos e Estruturas de Dados II (91) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 63 115
Algoritmos e Estruturas de Dados II (92) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 63 115
Algoritmos e Estruturas de Dados II (93) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 101 63 115
Algoritmos e Estruturas de Dados II (94) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (95) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (96) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (97) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
O algoritmo terminou? Por que?
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (98) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (99) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Comparao
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (100) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Menor (Ser o nmero da bolha)
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (101) Prof. Max do Val Machado
Algoritmo da Bolha
Bolha
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (102) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
O algoritmo terminou? Por que?
Ordenao Interna
Exemplo onde a parte ordenada est de azul e o nmero da bolha de
vermelho - o menor elemento momentaneamente
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (103) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenado
Ordenao Interna
Concluso:
O problema dos algoritmos de seleo e da bolha porque eles
realizam vrias comparaes redundantes
Alm disso, a bolha faz um nmero quadrtico de movimentaes
Algoritmo estvel
Algoritmos e Estruturas de Dados II (104) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenao Interna
Algoritmo em C like
Ver cdigo em: fonte/unidade04/Bolha.java
Algoritmos e Estruturas de Dados II (105) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenao Interna
Mtodo de ordenao por seleo em que os registros so comparados,
dois a dois e o menor movimentado para o incio do array
Anlise do nmero de comparaes:
, para os trs casos
Algoritmos e Estruturas de Dados II (106) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenao Interna
Anlise do nmero de movimentaes:
Pior caso: o array est ordenado de forma decrescente
Caso mdio: depende do nmero de inverses em todas as
permutaes do array
Algoritmos e Estruturas de Dados II (107) Prof. Max do Val Machado
Algoritmo da Bolha
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (108) Prof. Max do Val Machado
Exerccio
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (109) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (110) Prof. Max do Val Machado
Algoritmo de Insero
Menor
elemento
Maior
elemento
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (111) Prof. Max do Val Machado
Algoritmo de Insero
Se ele for maior que o da
posio anterior, os trs esto
nas posies atuais corretas
posio
anterior
ele
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (112) Prof. Max do Val Machado
Algoritmo de Insero
Se ele for menor que o da
posio anterior, trocamos
os dois e verificamos se o
ele menor que o primeiro
posio
anterior
ele
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (113) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (114) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (115) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (116) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (117) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Funcionamento bsico:
Temos duas sequncia (a ordenada e a ordenar) e, em cada passo,
aumentamos a ordenada com um elemento que deve ser inserido em
sua posio correta (ordenada)
Algoritmos e Estruturas de Dados II (118) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (119) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (120) Prof. Max do Val Machado
Inicialmente, temos um elemento,
logo, ele est na posio correta
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (121) Prof. Max do Val Machado
Comparamos o 101 e 115 e,
como o segundo o maior,
ele est ordenado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
101 115 30 63 47 20
Algoritmos e Estruturas de Dados II (122) Prof. Max do Val Machado
Inserindo o 30, verificamos
que ele menor que o 115,
logo, trocamos a posio dos dois
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
101 30 115 63 47 20
Algoritmos e Estruturas de Dados II (123) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
101 30 115 63 47 20
Algoritmos e Estruturas de Dados II (124) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 101 115 63 47 20
Algoritmos e Estruturas de Dados II (125) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 101 115 63 47 20
Algoritmos e Estruturas de Dados II (126) Prof. Max do Val Machado
Inserindo o 63
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 101 63 115 47 20
Algoritmos e Estruturas de Dados II (127) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 63 101 115 47 20
Algoritmos e Estruturas de Dados II (128) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 63 101 115 47 20
Algoritmos e Estruturas de Dados II (129) Prof. Max do Val Machado
Encontramos a
posio do 63
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 63 101 115 47 20
Algoritmos e Estruturas de Dados II (130) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 63 101 47 115 20
Algoritmos e Estruturas de Dados II (131) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 63 47 101 115 20
Algoritmos e Estruturas de Dados II (132) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 47 63 101 115 20
Algoritmos e Estruturas de Dados II (133) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 47 63 101 115 20
Algoritmos e Estruturas de Dados II (134) Prof. Max do Val Machado
Encontramos a
posio do 47
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 47 63 101 115 20
Algoritmos e Estruturas de Dados II (135) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 47 63 101 20 115
Algoritmos e Estruturas de Dados II (136) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 47 63 20 101 115
Algoritmos e Estruturas de Dados II (137) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 47 20 63 101 115
Algoritmos e Estruturas de Dados II (138) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
30 20 47 63 101 115
Algoritmos e Estruturas de Dados II (139) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (140) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Exemplo onde a parte ordenada est de azul
20 30 47 63 101 115
Algoritmos e Estruturas de Dados II (141) Prof. Max do Val Machado
Encontramos a
posio do 20
Algoritmo de Insero
Ordenao Interna
Algoritmo em C like
Ver cdigo em: fonte/unidade04/Insercao.java
Algoritmos e Estruturas de Dados II (142) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Anlise do nmero de comparaes:
Na i-sima interao do anel interno, tem-se que:
melhor caso:
pior caso:
caso mdio: (considera-se que todas as
permutaes de n so igualmente provveis)
Algoritmos e Estruturas de Dados II (143) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Anlise do nmero de comparaes:
Como o anel interno realizado (n 1) vezes, tem-se que:
melhor caso:
pior caso:
caso mdio:
Algoritmos e Estruturas de Dados II (144) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Anlise do nmero de movimentaes:
O nmero de movimentaes na i-sima interao igual a:
Logo, o nmero de movimentos igual a:
melhor caso:
pior caso:
caso mdio:
Algoritmos e Estruturas de Dados II (145) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Concluso:
Melhor caso (comparaes e movimentaes) array ordenado
Pior caso (comparaes e movimentaes) ordem decrescente
Mtodo a ser utilizado quando o array estiver quase ordenado
Boa opo se desejarmos adicionar alguns itens em um array
ordenado porque seu custo ser linear
Algoritmo estvel
Algoritmos e Estruturas de Dados II (146) Prof. Max do Val Machado
Algoritmo de Insero
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (147) Prof. Max do Val Machado
Exerccio
Ordenao Interna
Introduo:
Proposto por Shell em 1959 como uma extenso da Insero
O problema da Insero efetuamos (n 1) comparaes e
movimentaes quando o menor elemento est direita
O mtodo de Shell contorna esse problema permitindo trocas de registros
distantes um do outro (passo h)
Algoritmos e Estruturas de Dados II (148) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Os elementos separados de h posies so ordenados via Insero
Por exemplo, se h = 4, ordenamos com a Insero cada um dos pseudo
array
Algoritmos e Estruturas de Dados II (149) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Os elementos separados de h posies so ordenados via Insero
Por exemplo, se h = 4, ordenamos com a Insero cada um dos pseudo
array
Algoritmos e Estruturas de Dados II (150) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Os elementos separados de h posies so ordenados via Insero
Por exemplo, se h = 4, ordenamos com a Insero cada um dos pseudo
array
Algoritmos e Estruturas de Dados II (151) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Os elementos separados de h posies so ordenados via Insero
Por exemplo, se h = 4, ordenamos com a Insero cada um dos pseudo
array
Algoritmos e Estruturas de Dados II (152) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Os elementos separados de h posies so ordenados via Insero
Por exemplo, se h = 4, ordenamos com a Insero cada um dos pseudo
array
Algoritmos e Estruturas de Dados II (153) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Os elementos separados de h posies so ordenados via Insero
Por exemplo, se h = 4, ordenamos com a Insero cada um dos pseudo
array
Algoritmos e Estruturas de Dados II (154) Prof. Max do Val Machado
Algoritmo Shellsort
Pode parecer loucura, mas
repetiremos a Insero
para cada pseudo array
Ordenao Interna
Funcionamento bsico:
Neste momento, nossa sequncia dita h-ordenada (para nosso
exemplo 4-ordenada)
Em seguida, reduzimos o valor de h e repetimos o processo. Isso at
que o valor de h seja um e efetuamos a Insero pela ltima vez
Algoritmos e Estruturas de Dados II (155) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Funcionamento bsico:
Neste momento, nossa sequncia dita h-ordenada (para nosso
exemplo 4-ordenada)
Em seguida, reduzimos o valor de h e repetimos o processo. Isso at
que o valor de h seja um e efetuamos a Insero pela ltima vez
Algoritmos e Estruturas de Dados II (156) Prof. Max do Val Machado
Algoritmo Shellsort
Traduzindo: Ns j fizemos
quatro vezes a Insero e
vamos fazer mais...
Ordenao Interna
Funcionamento bsico:
Neste momento, nossa sequncia dita h-ordenada (para nosso
exemplo 4-ordenada)
Em seguida, reduzimos o valor de h e repetimos o processo. Isso at
que o valor de h seja um e efetuamos a Insero pela ltima vez
Algoritmos e Estruturas de Dados II (157) Prof. Max do Val Machado
Algoritmo Shellsort
... voc acredita que isso
ainda bom!!! Fala srio!
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (158) Prof. Max do Val Machado
Algoritmo Shellsort
90 45 32 11 15 60 45 70 20 13 40 39 25 10
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (159) Prof. Max do Val Machado
Algoritmo Shellsort
90 45 32 11 15 60 45 70 20 13 40 39 25 5
Como h = 4, define-se quatro pseudo arrays com
as cores azul, vermelha, verde e amarela
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (160) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos azuis
90 45 32 11 15 60 45 70 20 13 40 39 25 10
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (161) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos azuis
15 45 32 11 20 60 45 70 25 13 40 39 90 10
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (162) Prof. Max do Val Machado
Algoritmo Shellsort
15 45 32 11 20 60 45 70 25 13 40 39 90 10
Fazendo o algoritmo de insero nos vermelhos
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (163) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos vermelhos
15 45 32 11 20 60 45 70 25 13 40 39 90 10
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (164) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos vermelhos
15 10 32 11 20 13 45 70 25 45 40 39 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (165) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos verdes
15 10 32 11 20 13 45 70 25 45 40 39 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (166) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos verdes
15 10 32 11 20 13 45 70 25 45 40 39 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (167) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos verdes
15 10 32 11 20 13 40 70 25 45 45 39 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (168) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos amarelos
15 10 32 11 20 13 40 70 25 45 45 39 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (169) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos amarelos
15 10 32 11 20 13 40 39 25 45 45 70 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (170) Prof. Max do Val Machado
Algoritmo Shellsort
15 10 32 11 20 13 40 39 25 45 45 70 90 60
Com h = 4, o array no est ordenado, mas os
nmeros esto mais prximos de suas posies
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (171) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 2, define-se dois pseudo arrays com
as cores azul e vermelha
15 10 32 11 20 13 40 39 25 45 45 70 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (172) Prof. Max do Val Machado
Algoritmo Shellsort
15 10 32 11 20 13 40 39 25 45 45 70 90 60
Fazendo o algoritmo de insero nos azuis
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (173) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos azuis
15 10 32 11 20 13 40 39 25 45 45 70 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (174) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos azuis
15 10 20 11 25 13 32 39 40 45 45 70 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (175) Prof. Max do Val Machado
Algoritmo Shellsort
15 10 32 11 20 13 40 39 25 45 45 70 90 60
Com h = 4, o array no est ordenado, mas os
nmeros esto mais prximos de suas posies
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (176) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos vermelhos
15 10 20 11 25 13 32 39 40 45 45 70 90 60
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (177) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo o algoritmo de insero nos vermelhos
15 10 20 11 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (178) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
15 10 20 11 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (179) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
15 10 20 11 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (180) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 15 20 11 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (181) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 15 20 11 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (182) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 15 11 20 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (183) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 15 20 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (184) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 15 20 25 13 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (185) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 15 20 13 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (186) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 15 13 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (187) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (188) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (189) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (190) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (191) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (192) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (193) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (194) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 90 70
Ordenao Interna
Exemplo: Ordene o array abaixo com o Shellsort, fazendo h = 4, 2 e 1
Algoritmos e Estruturas de Dados II (195) Prof. Max do Val Machado
Algoritmo Shellsort
Fazendo h = 1, ou seja, a insero original
10 11 13 15 20 25 32 39 40 45 45 60 70 90
Ordenao Interna
Segundo Knuth (1973, p. 95), de forma emprica, a sequncia 1, 4, 13,
40, 121, ... difcil de ser batida por mais de 20% em eficincia
h(s)= 3h(s-1) + 1
h(s) = 1
Algoritmos e Estruturas de Dados II (196) Prof. Max do Val Machado
Algoritmo Shellsort
{
Ordenao Interna
Algoritmo em C like
Ver cdigo em: fonte/unidade04/Shellsort.java
Algoritmos e Estruturas de Dados II (197) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Anlise do nmero de comparaes:
A razo da eficincia do algoritmo ainda no conhecida
Sua anlise contm alguns problemas matemticos difceis, a comear
pela prpria sequncia de incrementos
O que se sabe que cada incremento no deve ser mltiplo do anterior
Conjecturas para o nmero de comparaes dado a seq. de Knuth:
Conjetura 1:
Conjetura 2:
Algoritmos e Estruturas de Dados II (198) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Concluso:
Vantagens:
Shellsort uma tima opo para arquivos de tamanho moderado
Sua implementao simples e requer pouco cdigo
Desvantagens:
Seu tempo de execuo sensvel ordem inicial do arquivo
Algoritmo no estvel
Algoritmos e Estruturas de Dados II (199) Prof. Max do Val Machado
Algoritmo Shellsort
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (200) Prof. Max do Val Machado
Exerccio
Ordenao Interna
Introduo:
Proposto por Hoare em 1960 e publicado em 1962
Algoritmo de ordenao mais rpido para a maioria das situaes
Provavelmente o mais utilizado
Sua ideia bsica dividir o problema em dois problemas menores que
sero ordenados independentemente
Algoritmos e Estruturas de Dados II (201) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Introduo:
Os resultados combinados produzem a soluo final
Sua parte mais delicada o processo de partio em que o array
particionado em duas partes:
A parte da esquerda ter elementos menores ou iguais a um piv
A parte da direita ter elementos maiores ou iguais a um piv
Algoritmos e Estruturas de Dados II (202) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Funcionamento bsico:
Algoritmo para o particionamento:
Escolha arbitrariamente um piv x
Percorra o array a partir da esquerda enquanto array[ i ] < x
Percorra o array a partir da direita enquanto array[ j ] > x
Se i j ento troque array[ i ] com array[ j ]
Continue o processo enquanto i j
Algoritmos e Estruturas de Dados II (203) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Funcionamento bsico:
No final, o array estar particionado de tal forma que:
Os elementos array[esq], array[esq+1], . . . , array[ j ] so que x
Os elementos array[i], array[i+1], . . . , array[dir] so que x
Algoritmos e Estruturas de Dados II (204) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Exemplo:
Texto O R D E N A e piv D
Enquanto vet[i] < D, fazemos i++ encontramos o O
Enquanto vet[j] > D, fazemos j- - encontramos o A
Trocamos os dois elementos: A R D E N O
Enquanto vet[i] < D, fazemos i++ encontramos o R
Enquanto vet[j] > D, fazemos j-- encontramos o D
Trocamos os dois elementos: A D R E N O
Chamamos o quicksort para A D e R E N O
Algoritmos e Estruturas de Dados II (205) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Algoritmo em C like
Ver cdigo em: fonte/unidade04/Quicksort.java
Algoritmos e Estruturas de Dados II (206) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Anlise do nmero de comparaes:
Pior caso: Sistematicamente, o piv o menor ou o maior elemento do
array, eliminando um elemento em cada chamada do algoritmo
Existem diversas tcnicas para evitar o pior caso como, por exemplo,
fazer com que o piv seja a mediana de trs elementos do array
Algoritmos e Estruturas de Dados II (207) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Anlise do nmero de comparaes:
Melhor caso: Sistematicamente, cada partio divide o arquivo em duas
partes iguais
Caso Mdio: Sedgewick e Flajolet (1996, p. 17):
Algoritmos e Estruturas de Dados II (208) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Anlise do nmero de movimentaes:
No pior caso, h trocas ( movimentaes) em cada
execuo da funo de partio
Corresponde ao caso em que o piv se coloca no meio do array e os
elementos superiores esto sistematicamente no incio da lista e os
inferiores, no fim
Algoritmos e Estruturas de Dados II (209) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Concluses:
A razo de sua velocidade a simplicidade do seu anel interno
Vantagens:
Extremamente eficiente
Necessita de apenas uma pequena pilha como memria auxiliar
Faz em mdia n*lg(n) comparaes - O (n*lg(n))
Algoritmos e Estruturas de Dados II (210) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Concluses:
Desvantagens:
Seu pior caso para comparaes quadrtico
Sua implementao delicada e difcil
Mtodo no estvel
Algoritmos e Estruturas de Dados II (211) Prof. Max do Val Machado
Algoritmo Quicksort
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (212) Prof. Max do Val Machado
Exerccio
Ordenao Interna
Introduo:
O Heapsort um algoritmo de seleo que seleciona o maior elemento
em uma lista, troca o com o ltimo e repete o processo
Sua diferena em relao ao algoritmo de seleo que o Heapsort
utiliza um Heap Invertido para selecionar o maior de forma eficiente
Neste momento, precisamos conhecer os conceitos de rvore e heap
Algoritmos e Estruturas de Dados II (213) Prof. Max do Val Machado
Algoritmo Heapsort
Ordenao Interna
Estrutura de dados cujas operaes de insero, remoo e substituio
possuem a mesma eficincia
Estrutura de dados que contm um conjunto finito de vrtices (ns) e outro
de arcos (arestas) que conectam os vrtices
Algoritmos e Estruturas de Dados II (214) Prof. Max do Val Machado
rvore
Ordenao Interna
Estrutura de dados cujas operaes de insero, remoo e substituio
possuem a mesma eficincia
Estrutura de dados que contm um conjunto finito de vrtices (ns) e outro
de arcos (arestas) que conectam os vrtices
Algoritmos e Estruturas de Dados II (215) Prof. Max do Val Machado
rvore
O n 5 denominado n raiz e
ele est no nvel 0
Ordenao Interna
Estrutura de dados cujas operaes de insero, remoo e substituio
possuem a mesma eficincia
Estrutura de dados que contm um conjunto finito de vrtices (ns) e outro
de arcos (arestas) que conectam os vrtices
Algoritmos e Estruturas de Dados II (216) Prof. Max do Val Machado
rvore
Os ns 3 e 7 so filhos do 5 e
esse pai dos dois primeiros
Ordenao Interna
Estrutura de dados cujas operaes de insero, remoo e substituio
possuem a mesma eficincia
Estrutura de dados que contm um conjunto finito de vrtices (ns) e outro
de arcos (arestas) que conectam os vrtices
Algoritmos e Estruturas de Dados II (217) Prof. Max do Val Machado
rvore
Um n com filho(s) chamado de
n interno e outro sem, de folha
Ordenao Interna
Estrutura de dados cujas operaes de insero, remoo e substituio
possuem a mesma eficincia
Estrutura de dados que contm um conjunto finito de vrtices (ns) e outro
de arcos (arestas) que conectam os vrtices
Algoritmos e Estruturas de Dados II (218) Prof. Max do Val Machado
rvore
Nosso exemplo uma rvore
binria, pois cada n tem no
mximo dois filhos
Ordenao Interna
rvore binria em que o valor de cada n menor ou igual ao de seus
filhos
Suas folhas ocupam um ou dois nveis sendo que o penltimo completo
e as folhas do ltimo nvel se agrupam o mais esquerda possvel
O menor elemento encontra-se sempre na raiz
Algoritmos e Estruturas de Dados II (219) Prof. Max do Val Machado
Heap
Ordenao Interna
Exerccio: Mostre um heap com os elementos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9
Algoritmos e Estruturas de Dados II (220) Prof. Max do Val Machado
Heap
Ordenao Interna
Exerccio: Mostre um heap com os elementos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9
Algoritmos e Estruturas de Dados II (221) Prof. Max do Val Machado
Heap
Ordenao Interna
rvore binria em que o valor de cada n maior ou igual ao de seus
filhos
Suas folhas ocupam um ou dois nveis sendo que o penltimo completo
e as folhas do ltimo nvel se agrupam o mais esquerda possvel
O maior elemento encontra-se sempre na raiz
Algoritmos e Estruturas de Dados II (222) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Mostre um heap invertido com os elementos 0, 1, 2, 3, 4, 5, 6,
7, 8 e 9
Algoritmos e Estruturas de Dados II (223) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Mostre um heap invertido com os elementos 0, 1, 2, 3, 4, 5, 6,
7, 8 e 9
Algoritmos e Estruturas de Dados II (224) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Operaes possveis:
Construo
Insero de um novo elemento
Remoo do elemento com a maior chave
Remoo de um elemento qualquer
Unificar dois ou mais heaps
Algoritmos e Estruturas de Dados II (225) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Princpio da insero:
Crie uma nova folha (contendo o elemento a ser inserido) no ltimo
nvel do heap. Se esse estiver completo, recomece um novo nvel
Se o novo elemento for maior que seu pai, troque os e realize o mesmo
processo para o pai, para o pai do pai e assim sucessivamente at
todos os pais sejam maiores que seus filhos
Algoritmos e Estruturas de Dados II (226) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Inserir o 15 no heap invertido abaixo
Algoritmos e Estruturas de Dados II (227) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Inserir o 15 no heap invertido abaixo
Algoritmos e Estruturas de Dados II (228) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Inserir o 15 no heap invertido abaixo
Algoritmos e Estruturas de Dados II (229) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Inserir o 15 no heap invertido abaixo
Algoritmos e Estruturas de Dados II (230) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Princpio da remoo:
Remover o elemento da raiz e substituindo o pelo da ltima folha do
ltimo nvel
Remover a ltima folha do ltimo nvel
Trocar o elemento da raiz com o de seu maior filho
Repetir o passo anterior para o filho com elemento trocado at que
todos os pais sejam maiores que seus filhos
Algoritmos e Estruturas de Dados II (231) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (232) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (233) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (234) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (235) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (236) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (237) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Remover no heap invertido abaixo
Algoritmos e Estruturas de Dados II (238) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Anlise de complexidade:
As operaes de insero e remoo podem percorrer um ramo
completo da rvore, com comparaes e trocas em cada n
O pior caso para os nmeros de comparaes ou trocas depende da
altura da rvore que ser (rvore balanceada)
Assim, no pior caso, os nmeros de comparaes ou trocas sero
Algoritmos e Estruturas de Dados II (239) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Representao:
Pode-se representar qualquer rvore binria em um array fazendo:
array[ 1 ] a raiz
array[ i / 2 ] o pai de array[ i ], para i > 1
Se array [2 * i] e array [2 * i + 1] existem, eles so filhos de array[ i ]
Se i maior que (n / 2), array[ i ] uma folha
Algoritmos e Estruturas de Dados II (240) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (241) Prof. Max do Val Machado
Heap Invertido
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (242) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (243) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
16
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (244) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
16 14 10
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (245) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
16 14 10 13 11
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (246) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
16 14 10 13 11 8 9
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (247) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
16 14 10 13 11 8 9 7 1 5
Ordenao Interna
Exerccio: Representar o heap invertido abaixo em um array
Algoritmos e Estruturas de Dados II (248) Prof. Max do Val Machado
Heap Invertido
1 2 3 4 5 6 7 8 9 10
16 14 10 13 11 8 9 7 1 5
Ordenao Interna
Funcionamento bsico:
Construir um heap invertido atravs de inseres sucessivas dos n
elementos array a ser ordenado
Remover o maior elemento do heap e coloc-lo aps a ltima posio
vlida do heap corrente
Repetir o passo anterior at que o heap esteja vazio
Algoritmos e Estruturas de Dados II (249) Prof. Max do Val Machado
Heapsort
Ordenao Interna
Construo de um heap invertido atravs de inseres sucessivas dos n
elementos array a ser ordenado
Algoritmos e Estruturas de Dados II (250) Prof. Max do Val Machado
Heapsort
void construirHeap(int[] array, int tamHeap){
for(int i = tamHeap; i > 1 && array[i - 1] > array[i/2 - 1]; i /= 2){
int tmp = array[i - 1];
array[i - 1] = array[i/ 2 - 1];
array[i/2 - 1] = tmp;
}
}
Ordenao Interna
Remoo do maior elemento do heap e coloc-lo aps a ltima posio
vlida do heap corrente
Algoritmos e Estruturas de Dados II (251) Prof. Max do Val Machado
Heapsort
Ordenao Interna
Remoo do maior elemento do heap e coloc-lo aps a ltima posio
vlida do heap corrente
Algoritmos e Estruturas de Dados II (252) Prof. Max do Val Machado
Heapsort
int removerHeap(int[] array, int tamHeap){
int removido = array[0], aux;
array[0] = array[tamHeap-1];
for (int i = 1; i <= (tamHeap/2); i = aux){
boolean c= (2*i == tamHeap) || (array[(2*i) - 1] > array[(2*i+1) - 1]);
aux = (2*i) + ((c) ? 0 : 1);
if (array[i-1] < array[aux-1]){ array[i-1] array[aux-1];
} else { aux = tamHeap; }
}
return removido;
}
Ordenao Interna
Anlise do nmero de comparaes:
Constroi-se o heap com n chamadas do mtodo de inserir e faz-se (n-1)
remoes para ordenar o array, logo, tem-se no pior caso:
Algoritmos e Estruturas de Dados II (253) Prof. Max do Val Machado
Heapsort
Ordenao Interna
Anlise do nmero de movimentaes:
O nmero de movimentaes trs vezes o de trocas mais as (n-1)
movimentaes correspondentes s remoes
Como o nmero de trocas tem seu limite superior dado pelo de
comparaes, a complexidade, no pior caso, .
Algoritmos e Estruturas de Dados II (254) Prof. Max do Val Machado
Heapsort
Ordenao Interna
Algoritmo em C like
Ver cdigo em: fonte/unidade04/Heapsort.java
Algoritmos e Estruturas de Dados II (255) Prof. Max do Val Machado
Heapsort
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (256) Prof. Max do Val Machado
Exerccio
Ordenao Interna
Ideia Bsica:
Considera-se trs arrays: entrada, contagem e sada
Para cada elemento do array de entrada, determina-se no array de
contagem a quantidade de elementos menores ou igual a ele
Usa-se essa informao para inserir cada elemento em sua posio no
array de sada
Por exemplo, se um elemento x for maior que outros 17 elementos, x
ser inserido na 18
a
posio
Algoritmos e Estruturas de Dados II (257) Prof. Max do Val Machado
Counting Sort
Ordenao Interna
Ideia Bsica:
Suponha que o array de entrada tenha n elementos cujos valores esto
entre 0 e k
Logo, o array de sada ter n elementos e o de contagem ter k
elementos onde o valor inicial de cada posio ser zero
Algoritmos e Estruturas de Dados II (258) Prof. Max do Val Machado
Counting Sort
Ordenao Interna
Funcionamento Bsico:
Inicializar todas as posies do array de contagem com zero
Para cada elemento do array de entrada, increment-lo no de contagem
Fazer com que o array de contagem seja acumulativo de tal forma que
cada posio i armazene o nmero de elementos menores ou iguais a i
Sabendo o nmero de elementos menores ou iguais a i, preencher o
array de sada
Algoritmos e Estruturas de Dados II (259) Prof. Max do Val Machado
Counting Sort
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (260) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
Array de entrada
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (261) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
Array de entrada
O array de contagem ter seis posies (0 5)
O array de sada ter oito posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (262) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 0 0 0 0
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
Array de sada
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (263) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 0 0 0 0
0 1 2 3 4 5
Array de entrada
Array de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (264) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 0 0 0 0
0 1 2 3 4 5
Array de entrada
Array de contagem
Inicializar todas as posies
do array de contagem com zero
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (265) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 0 0 0 0
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (266) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 1 0 0 0
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (267) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 1 0 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (268) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 0 1 1 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (269) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 0 1 1 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (270) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 0 2 1 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (271) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 0 2 2 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (272) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 0 2 2 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (273) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 0 2 3 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Para cada elemento do array de entrada,
increment-lo no de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (274) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 0 2 3 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (275) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 0 2 3 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (276) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 0 2 3 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (277) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 2 3 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (278) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 3 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (279) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 0 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (280) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 1
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (281) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
Fazer com que o array de contagem seja
acumulativo de tal forma que cada posio i armazene
o nmero de elementos menores ou iguais a i
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (282) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (283) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (284) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (285) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
7
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (286) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 7 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
7
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (287) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (288) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (289) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 5 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
2
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (290) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
2 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
2
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (291) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (292) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (293) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
6
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (294) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 6 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
6
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (295) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (296) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (297) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 0 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (298) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 4 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
4
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (299) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (300) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (301) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
2 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
1
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (302) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
1 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
1
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (303) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (304) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (305) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (306) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 2 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
5
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (307) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 5 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 3
0 1 2 3 4 5 6 7
Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
5
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (308) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 3 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (309) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 3 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (310) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 3 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (311) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 3 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
8
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (312) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 8
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
8
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (313) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (314) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (315) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (316) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 3 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
3
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (317) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 3 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 2 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
3
a
posio
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (318) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 2 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 2 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
Atualizar array de
contagem
0 1 2 3 4 5 6 7
Ordenao Interna
Exemplo:
Algoritmos e Estruturas de Dados II (319) Prof. Max do Val Machado
Counting Sort
2 5 3 0 2 3 0 3
0 1 2 3 4 5 6 7
0 2 2 4 7 7
0 1 2 3 4 5
Array de entrada
Array de contagem
0 0 2 2 3 3 3 5 Array de sada
Preencher o array de sada, copiando
os elementos da entrada de trs para
frente nas suas respectivas posies
0 1 2 3 4 5 6 7
Ordenao Interna
Anlise do complexidade para operaes com elementos do array:
Inicializar todas as posies do array de contagem com zero
Para cada elemento do array de entrada, increment-lo no de contagem
Fazer com que o array de contagem seja acumulativo de tal forma que
cada posio i armazene o nmero de elementos menores ou iguais a i
Sabendo o nmero de elementos menores ou iguais a i, preencher o
array de sada
Algoritmos e Estruturas de Dados II (320) Prof. Max do Val Machado
Counting Sort
O(n)
Ordenao Interna
Anlise do complexidade para operaes com elementos do array:
Inicializar todas as posies do array de contagem com zero
Para cada elemento do array de entrada, increment-lo no de contagem
Fazer com que o array de contagem seja acumulativo de tal forma que
cada posio i armazene o nmero de elementos menores ou iguais a i
Sabendo o nmero de elementos menores ou iguais a i, preencher o
array de sada
Algoritmos e Estruturas de Dados II (321) Prof. Max do Val Machado
Counting Sort
O(n)
O(n)
Ordenao Interna
Anlise do complexidade para operaes com elementos do array:
Inicializar todas as posies do array de contagem com zero
Para cada elemento do array de entrada, increment-lo no de contagem
Fazer com que o array de contagem seja acumulativo de tal forma que
cada posio i armazene o nmero de elementos menores ou iguais a i
Sabendo o nmero de elementos menores ou iguais a i, preencher o
array de sada
Algoritmos e Estruturas de Dados II (322) Prof. Max do Val Machado
Counting Sort
O(n)
O(n)
O(n)
Ordenao Interna
Anlise do complexidade para operaes com elementos do array:
Inicializar todas as posies do array de contagem com zero
Para cada elemento do array de entrada, increment-lo no de contagem
Fazer com que o array de contagem seja acumulativo de tal forma que
cada posio i armazene o nmero de elementos menores ou iguais a i
Sabendo o nmero de elementos menores ou iguais a i, preencher o
array de sada
Algoritmos e Estruturas de Dados II (323) Prof. Max do Val Machado
Counting Sort
O(n)
O(n)
O(n)
O(n)
Ordenao Interna
Anlise do complexidade para operaes com elementos do array:
Algoritmos e Estruturas de Dados II (324) Prof. Max do Val Machado
Counting Sort
O(n) + O(n) + O(n) + O(n) = O(n)
Ordenao Interna
Algoritmo em C-like:
Ver cdigo em: fonte/unidade04/Countingsort.java
Algoritmos e Estruturas de Dados II (325) Prof. Max do Val Machado
Counting Sort
Ordenao Interna
Mostre todas as comparaes e movimentaes do algoritmo anterior
para o array abaixo:
Algoritmos e Estruturas de Dados II (326) Prof. Max do Val Machado
Exerccio
Ordenao Interna
A resposta no simples, pois os resultados obtido no levam em conta
outras operaes como controle dos laos e clculos dos ndices. Alm
disso, eles desconsideram arquitetura, SO, compilador e hardware
Uma forma de ajudar na resposta a avaliao experimental dos mtodos
de ordenao
Algoritmos e Estruturas de Dados II (327) Prof. Max do Val Machado
Qual o Melhor Algoritmo de Ordenao?
Ordenao Interna
Algoritmos e Estruturas de Dados II (328) Prof. Max do Val Machado
Avaliao para Registros na Ordem Aleatria
Ordenao Interna
Algoritmos e Estruturas de Dados II (329) Prof. Max do Val Machado
Avaliao para Registros na Ordem Crescente
Ordenao Interna
Algoritmos e Estruturas de Dados II (330) Prof. Max do Val Machado
Avaliao para Registros na Ordem Decrescente
Ordenao Interna
Confirme experimentalmente as trs tabelas anteriores e adicione o
Countingsort
Algoritmos e Estruturas de Dados II (331) Prof. Max do Val Machado
Exerccio
Ordenao Interna
A vantagem do algoritmo de seleo seu nmero de movimentos de
registros que O(n)
O algoritmos de Insero interessante para arrays ordenados (ou
praticamente)
Os mtodos de seleo, insero e Countingsort so estveis
Algoritmos e Estruturas de Dados II (332) Prof. Max do Val Machado
Consideraes Finais
Ordenao Interna
O Quicksort o mais eficiente para uma grande variedade de situaes
O pior caso do Quicksort O(n
2
)
O pior caso do Heapsort O(n*lg(n))
Algoritmos e Estruturas de Dados II (333) Prof. Max do Val Machado
Consideraes Finais

Você também pode gostar