Ordenação Professor Paulo Gomide 27 de outubro de 2015.

25
Ordenação Professor Paulo Gomide 27 de outubro de 2015

Transcript of Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Page 1: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Ordenação

Professor Paulo Gomide

27 de outubro de 2015

Page 2: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

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.

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.

Definição e Objetivos da Ordenação

Page 5: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

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.

Métodos para Ordenação

Page 7: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Ordernação por Inserção

Page 8: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Ordernação por Inserção

Page 9: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Ordenação por Inserção: Análise

Page 10: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

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.

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.

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.

Mergesort: Exemplo

Page 14: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 15: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 16: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 17: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 18: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 19: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 20: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 21: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 22: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

Mergesort: Exemplo

Page 23: Ordenação Professor Paulo Gomide 27 de outubro de 2015.

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.

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.

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.