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.
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.
Definição e Objetivos da Ordenação
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.
Métodos para Ordenação
Ordernação por Inserção
Ordernação por Inserção
Ordenação por Inserção: Análise
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.
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.
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).
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
Mergesort: Exemplo
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.
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.
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.
Download

Ordenação