Ordenação Professor Paulo Gomide 27 de outubro de 2015.
-
Upload
luiz-henrique-fontes-aires -
Category
Documents
-
view
213 -
download
0
Transcript of Ordenação Professor Paulo Gomide 27 de outubro de 2015.
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.