![Page 1: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/1.jpg)
Ordenação
Professor Paulo Gomide
27 de outubro de 2015
![Page 2: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/2.jpg)
Sumário
• Ordenação:
– Considerações iniciais e definições;
– Métodos de ordenação:
• Inserção;
• Mergesort.
– Comparação entre os métodos apresentados.
![Page 3: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/3.jpg)
Considerações Iniciais
• Objetivos:– Definir e apresentar o problema da ordenação;
– Introduzir os conceitos de métodos de ordenação simples
e eficiente;
– Apresentar e analisar um método simples e um método
eficiente, comparando os mesmos.
![Page 4: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/4.jpg)
Definição e Objetivos da Ordenação
![Page 5: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/5.jpg)
Algumas Aplicações de Ordenação
• Testar se todos os elementos de um conjunto são distintos;
• Remover duplicações de elementos de um conjunto;
• Encontrar o k-ésimo menor item de um conjunto;
• Interseção e união de conjuntos;
• Busca eficiente.
![Page 6: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/6.jpg)
Métodos para Ordenação
![Page 7: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/7.jpg)
Ordernação por Inserção
![Page 8: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/8.jpg)
Ordernação por Inserção
![Page 9: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/9.jpg)
Ordenação por Inserção: Análise
![Page 10: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/10.jpg)
Divisão e Conquista
• Deseja-se revolver um problema com uma entrada grande;
• Para facilitar a resolução do problema, a entrada é dividida
em pedaços menores (DIVISÃO);
• Cada pedaço da entrada é então tratado separadamente
(CONQUISTA);
• Ao final, os resultados parciais são combinados para gerar
o resultado final procurado.
![Page 11: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/11.jpg)
Divisão e Conquista
• Técnica consistem em 3 passos:
1. Divisão: Dividir o problema original em subproblemas menores;
2. Conquista: Resolver cada subproblema independentemente
(em geral, recursivamente);
3. Combinação: Combinar as soluções encontradas, compondo
uma solução para o problema original.
![Page 12: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/12.jpg)
Mergesort: Exemplo• A execução do Mergesort pode ser facilmente descrita
por uma árvore binária, onde:- Cada nó representa uma chamada recursiva do Mergesort;- O nó raiz é a chamada inicial;- Os nós folhas são vetores de 1 ou 2 números (casos bases).
![Page 13: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/13.jpg)
Mergesort: Exemplo
![Page 14: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/14.jpg)
Mergesort: Exemplo
![Page 15: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/15.jpg)
Mergesort: Exemplo
![Page 16: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/16.jpg)
Mergesort: Exemplo
![Page 17: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/17.jpg)
Mergesort: Exemplo
![Page 18: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/18.jpg)
Mergesort: Exemplo
![Page 19: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/19.jpg)
Mergesort: Exemplo
![Page 20: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/20.jpg)
Mergesort: Exemplo
![Page 21: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/21.jpg)
Mergesort: Exemplo
![Page 22: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/22.jpg)
Mergesort: Exemplo
![Page 23: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/23.jpg)
Mergesort: Análise
• A altura h da árvore de execução é O(log n);
• A quantidade de operações em cada nível da árvore é
assintoticamente igual a O(n);
• Logo: algoritmo é O(n log n), em todos os casos.
![Page 24: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/24.jpg)
Mergesort: Análise
• Complexidade: O(n log n)• Vantagens– O(n log n) em todos os casos;– Indicado para aplicações que tem restrição crítica de tempo;– Fácil implementação.
• Desvantagens– Utiliza memória auxiliar – O(n);– Na prática pode ser mais lento que o Quicksort no caso médio.
![Page 25: Ordenação Professor Paulo Gomide 27 de outubro de 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062819/570638681a28abb8239034b0/html5/thumbnails/25.jpg)
Referências
• Knuth, The Art of Computer Programming, Vol. 3: Sorting and Searching,
2nd Ed, MA: Addison-Wesley, 1998;
• Aulas do professor Antonio Alfredo Ferreira Loureiro, DCC/UFMG,
Algoritmos e Estruturas de Dados II, 2007;
• Aulas do professor Túlio Toffolo, UFOP, Algoritmos e Estruturas de Dados
I, 2011;
• Aulas do professor Tim Roughgarden, Stanford University, Design and
Analysis of Algorithms I, 2012.