1 / 19

Classificação de dados por Intercalação: MergeSort

Classificação de dados por Intercalação: MergeSort. Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com. Principais Métodos. Classificação por Trocas Classificação por Seleção Classificação por Inserção Classificação por Intercalação. Classificação por Intercalação.

Download Presentation

Classificação de dados por Intercalação: MergeSort

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Classificação de dados por Intercalação: MergeSort Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com

  2. Principais Métodos • Classificação por Trocas • Classificação por Seleção • Classificação por Inserção • Classificação por Intercalação

  3. Classificação por Intercalação • Caracteriza-se pela utilização do padrão de projeto Divisão e Conquista. • Idéia básica (MergeSort): é muito fácil criar uma seqüência ordenada a partir de duas outras também ordenadas.

  4. Divisão e Conquista: MergeSort • Divisão: se S tem zero ou um elemento, retorna-se S (já está ordenado). Em qualquer outro caso (S tem pelo menos 2 elementos), removem-se todos os elementos de S e colocam-se em duas seqüências, S1 e S2, cada um contendo aproximadamente a metade dos elementos de S; • Recursão: ordena-se recursivamente as seqüências S1 e S2; • Conquista: os elementos são colocados de volta em S, unindo as seqüências S1 e S2 em uma seqüência ordenada.

  5. (b) Fase de Conquista Exemplo Divisão e Conquista (MergeSort) (a) Fase de Divisão

  6. Exemplo do Processo MergeSort

  7. MergeSort: Junção ou Merge • Utiliza um vetor temporário (Vtemp) para manter o resultado da ordenação dos 2 sub-vetores.

  8. MergeSort: Junção ou Merge • Após a ordenação, o conteúdo de Vtemp é transferido para o vetor.

  9. MergeSort: Junção ou Merge • Número de operações críticas ?

  10. MergeSort: Junção ou Merge

  11. Visão Geral do Processo MergeSort

  12. MergeSort (parte do pseudo-código) Algoritmo merge(S1,S2,S): { Entrada: Seqüências ordenadas S1 e S2 e uma seqüência vazia de S, todos implementados como arranjos. } { Saída: Seqüência ordenada S contendo os elementos de S1 e S2. } i  j 0 enquanto i < S1.size() e j < S2.size() faça se S1.get(i) <= S2.get(j) então S.addLast(S1.get(j)) { copia o i-nésimo elemento de S1 para o final de S } i  i + 1 senão S.addLAst(S2.get(j)){ copia o j-nésimo elemento de S2 para o final de S } j  j + 1 fimse fimenquanto enquanto i < S1.size() faça { copia os elementos restantes de S1 para S } S.addLast(S1.get(i)) i  i + 1 fimenquanto enquanto j < S2.size() faça { copia os elementos restantes de S2 para S } S.addLast(S2.get(j)) j  j +1 fimenquanto

  13. Exercício • Dado o vetor com as chaves [9 25 10 18 5 7 15 3],aplicar o método MergeSort para ordená-lo crescentemente.

  14. MergeSort: Análise de Desempenho(1/4) • Cenário do Melhor Caso ??? • Cenário do Pior Caso ??? • Cenário do Caso Médio ???

  15. MergeSort: Melhor Caso(2/4) • Característica: nunca é necessário trocar após comparações. • Quando isto ocorre !?

  16. MergeSort: Pior Caso (3/4) • Característica: sempre é necessário trocar após comparações. • Quando isso ocorre !?

  17. MergeSort: Caso Médio (4/4) • Característica: há necessidade de haver trocas após comparações. • Quando isso ocorre !?

  18. Considerações Finais • É possível implementar o Merge Sort utilizando somente um vetor auxiliar ao longo de toda a execução, tornando assim a complexidade de espaço adicional igual a Θ(n). • É possível também implementar o algoritmo com espaço adicional Θ(1). • Algoritmo criado por Von Neumann. • Comprovado matematicamente que é praticamente impossível fazer um algoritmo mais eficiente.

  19. Site sobre ordenação • http://math.hws.edu/TMCM/java/xSortLab/ • BubbleSort • QuickSort • SelectionSort • InsertionSort (Busca Seqüencial) • MergeSort

More Related