Buscar

AULA_5_MergeSort

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Aula 5 
Algoritmo e Estrutura de Dados II 
COM-112 
Vanessa Souza 
Universidade Federal de Itajubá – Instituto de Matemática e Computação 
Ordenação 
Classificação dos Métodos de Ordenação 
Ordenação 
Interna 
BubleSort 
Seleção 
Inserção 
MergeSort 
Quicksort 
Externa Intercalação 
Classificação dos Métodos de Ordenação 
Ordenação 
Interna 
BubleSort 
Seleção 
Inserção 
MergeSort 
Quicksort 
Externa Intercalação 
Classificação dos Métodos de Ordenação 
Ordenação 
Interna 
BubleSort 
Seleção 
Inserção 
MergeSort 
Quicksort 
Externa Intercalação 
Classificação dos Métodos de Ordenação 
Ordenação 
Interna 
BubleSort 
Seleção 
Inserção 
MergeSort 
Quicksort 
Externa Intercalação 
Comparação entre os métodos 
 Os algoritmos vistos até agora são muito citados por 
sua simplicidade. 
 
 Todos possuem complexidade assintótica do pior 
caso de O(n2). 
 
 Costumam ser bons para arquivos pequenos e já 
quase ordenados. 
Comparação entre os métodos 
 Existe uma outra gama de algoritmos de ordenação 
mais eficientes (O(log2n)). 
 mergeSort 
 quickSort 
 
 Esses algoritmos baseiam-se na estratégia de DIVIDIR 
PARA CONQUISTAR 
 
 Implementações mais difíceis – estritamente 
recursivos 
Classificação dos Métodos de Ordenação 
Ordenação 
Interna 
BubleSort 
Seleção 
Inserção 
MergeSort 
Quicksort 
Externa Intercalação 
Ordenação por Fusão ou 
Intercalação 
MergeSort 
MergeSort 
 Ideia : reduzir um problema em problemas menores, 
resolver cada um destes subproblemas e combinar as 
soluções parciais para obter a solução do problema 
original. 
 
 É composto de duas fases: 
 Divisão 
 Divide o vetor original em dois outros de tamanhos menores, 
recursivamente, até obter vetores de tamanho 1 
 Junção ou Merge 
 Intercala os elementos dos dois vetores ordenados para obter a 
ordenação total. 
MergeSort 
 Divisão: Divida o problema em duas ou mais partes, 
criando subproblemas menores. 
 
 Conquista: Os subproblemas são resolvidos 
recursivamente usando divisão e conquista. Caso os 
subproblemas sejam suficientemente pequenos 
resolva-os de forma direta. 
 
 Combina: Tome cada uma das partes e junte-as todas 
de forma a resolver o problema original. 
MergeSort 
 Algoritmo: 
 
 Caso o tamanho do vetor seja maior que 1 
1. Divida o vetor no meio 
2. Ordene a primeira metade recursivamente 
3. Ordene a segunda metade recursivamente 
4. Intercale as duas metades 
 Senão devolva o elemento 
MergeSort 
 Algoritmo: 
 
 
MergeSort 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
5 3 1 2 4 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
Encontra o meio 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
Encontra o meio 
2 4 5 3 1 
Divide 
Início = 0 
Fim = 2 
Início = 3 
Fim = 4 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
2 4 5 3 1 
Início = 0 
Fim = 2 
Meio = 1 
Início = 3 
Fim = 4 
Meio = 3 
Encontra o meio 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
Início = 0 
Fim = 1 
Início = 3 
Fim = 3 
Divide 
5 3 1 
Início = 2 
Fim = 2 
2 4 
Início = 4 
Fim = 4 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
Início = 0 
Fim = 1 
Meio = 0 
Início = 
3 
Fim = 3 
Encontra o meio 
5 3 1 
Início = 
2 
Fim = 2 
2 4 
Início = 
4 
Fim = 4 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
Início = 0 
Fim = 0 
Início = 
3 
Fim = 3 
Divide 
5 1 
Início = 
2 
Fim = 2 
2 4 
Início = 
4 
Fim = 4 
3 
Início = 1 
Fim = 1 
MergeSort 
 Dividir 
 Início = 0 
 Fim = 4 
 Meio = 2 
5 3 1 2 4 
Início = 
0 
Fim = 0 
Início = 
3 
Fim = 3 
Divide 
5 1 
Início = 
2 
Fim = 2 
2 4 
Início = 
4 
Fim = 4 
3 
Início = 
1 
Fim = 1 
MergeSort 
 Merge 
 Topo da pilha 
5 3 1 2 4 
Início = 0 
Fim = 1 
Meio = 0 
Ordena em um vetor auxiliar 
5 3 3 5 
Vet aux 
Início = 0 
Fim = 1 
Meio = 0 
MergeSort 
 Merge 
 Topo da pilha 
3 5 1 2 4 
Início = 0 
Fim = 1 
Meio = 0 
Copia o vetor auxiliar para o vetor original 
5 3 3 5 
Vet aux 
Início = 0 
Fim = 1 
Meio = 0 
MergeSort 
 Merge 
 Topo da pilha 
Ordena em um vetor auxiliar 
1 3 5 
Vet aux 
3 5 1 
Início = 0 
Fim = 2 
Meio = 1 
3 5 1 2 4 
Início = 0 
Fim = 2 
Meio = 1 
MergeSort 
 Merge 
 Topo da pilha 
1 3 5 
Vet aux 
3 5 1 
Início = 0 
Fim = 2 
Meio = 1 
1 3 5 2 4 
Copia o vetor auxiliar para o vetor original 
Início = 0 
Fim = 2 
Meio = 1 
MergeSort 
 Merge 
 Topo da pilha 
2 4 
Vet aux 
1 3 5 2 4 
2 4 
Início = 3 
Fim = 4 
Meio = 3 
Ordena em um vetor auxiliar 
Início = 3 
Fim = 4 
Meio = 3 
MergeSort 
 Merge 
 Topo da pilha 
2 4 
Vet aux 
1 3 5 2 4 
2 4 
Início = 3 
Fim = 4 
Meio = 3 
Ordena em um vetor auxiliar Copia o vetor auxiliar para o vetor original 
Início = 3 
Fim = 4 
Meio = 3 
MergeSort 
 Merge 
 Topo da pilha 
Vet aux Início = 3 
Fim = 4 
Meio = 3 
Ordena em um vetor auxiliar 
1 3 5 2 4 
1 2 3 4 5 
1 3 5 2 4 
Início = 0 
Fim = 4 
Meio = 2 
MergeSort 
 Merge 
 Topo da pilha 
Vet aux Início = 3 
Fim = 4 
Meio = 3 
Ordena em um vetor auxiliar 
1 3 5 2 4 
1 2 3 4 5 
1 2 3 4 5 
Início = 0 
Fim = 4 
Meio = 2 
MergeSort 
 Merge 
 Pilha vazia 
1 2 3 4 5 
Vetor Ordenado 
MergeSort 
 Exemplo 2 
 Fazer a ordenação do vetor abaixo, passo a passo, utilizando 
o algoritmo MergeSort. 
 Mostrar a pilha de execução. 
86 19 38 91 50 8 23 97 
MergeSort 
 Vamos programar? 
 Na fase da intercalação, os dados são ordenados, por 
comparação, em um vetor auxiliar que depois é copiado 
para o vetor original. 
MergeSort 
MergeSort 
 A eficiência do algoritmo depende de quão 
eficientemente será a intercalação dos dois vetores 
(ordenados) em um único vetor ordenado. 
 
 A intercalação pode ser feita fazendo-se, no máximo, (n – 
1) comparações, onde n é o número total de elementos 
dos dois vetores originais, ou seja, o algoritmo de 
intercalação é O(n). 
 
 Como o número de elementos do vetor é reduzido à 
metade em cada chamada do mergesort, o número total 
de "rodadas" é log2n. 
MergeSort 
 Atividade 
 Implementar a função Merge 
MergeSort 
 http://nicholasandre.com.br/sorting/

Outros materiais