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