slide sem título§ão-mergesort1.pdf · o algoritmo mergesort o algoritmo divide a sequência...
TRANSCRIPT
![Page 1: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/1.jpg)
Algoritmo MergeSort
Estrutura de Dados IIProf Jairo Francisco de Souza
![Page 2: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/2.jpg)
Intercalação Generalidades
Intercalação é o processo através do qual diversos arquivos seqüenciais classifcados por um mesmo critério são mesclados gerando um único arquivo seqüencial
Algoritmo Básico De cada um dos arquivos a intercalar basta ter em memória
um registro. Considera-se cada arquivo como uma pilha, e o registro em memória seu topo
Em cada iteração do algoritmo e leitura dos registros, o topo da pilha com menor chave é gravado, e substituído pelo seu sucessor. Pilhas vazias têm topo igual a high value
O algoritmo termina quando todos os topos da pilha tiverem high value
![Page 3: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/3.jpg)
Intercalação Outra forma de intercalação é mesclar dois vetores (ordenados previamente)
O resultado é um vetor ordenado, com os elementos dos vetores usados na mesclagem
11 33 55 55 77 99 99Vetor 1
22 44 77 88Vetor 2
11 22 33 44 55 55 77 77 88 99 99Vetor_Resultado
![Page 4: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/4.jpg)
Intercalação Inicialmente, para que aconteça a intercalação (ou merge),
os elementos dos dois vetores devem ser copiados para apenas um vetor
Para execução do algoritmo de intercalação, o índice de início do segundo vetor e o tamanho do novo vetor devem ser encontrados
11 33 55 55 77 99 99 22 44 77 88
11 33 55 55 77 99 99
Vetor 1
22 44 77 88
Vetor 2
11 22 33 44 55 55 77 77 88 99 99
União dos Vetores
Inicio_Vet_2Inicio Fim
Intercalação
![Page 5: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/5.jpg)
Intercalação A intercalação deve ser usada também quando há
necessidade de unir dados de dois arquivos de dados Desta maneira, os dados poderiam ser acessados por meio
de suas estruturas Através de comandos de manipulação de arquivos, os dados
entre os arquivos poderiam ser intercalados, gerando um novo arquivo de dados
Neste caso, o desenvolvedor deve se preocupar principalmente com a coincidência de chaves primárias, e realizar o tratamento das transações problemáticas
![Page 6: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/6.jpg)
Algoritmo de Intercalaçãointercala (inteiro inicio_vet, inteiro inicio_vet_2, inteiro fim_vet, inteiro vetor[]) { inteiro indice_inicio, indice_inicio_vet_2, indice_aux; inteiro *vetor_aux; vetor_aux = (inteiro *) aloca_memoria (fim_vet * sizeof (inteiro)); indice_inicio = inicio_vet; indice_inicio_vet_2 = inicio_vet_2; indice_aux = 0; Enquanto (indice_inicio < inicio_vet_2 e indice_inicio_vet_2 < fim_vet) { Se (vetor[indice_inicio] <= vetor[indice_inicio_vet_2]) { vetor_aux [indice_aux] = vetor[indice_inicio]; indice_aux = indice_aux + 1; indice_inicio = indice_inicio + 1; } senão { vetor_aux [indice_aux] = vetor[indice_inicio_vet_2]; indice_aux = indice_aux + 1; indice_inicio_vet_2 = indice_inicio_vet_2 + 1; } } Enquanto (indice_inicio < inicio_vet_2) { vetor_aux [indice_aux] = vetor[indice_inicio]; indice_aux = indice_aux + 1; indice_inicio = indice_inicio + 1; } Enquanto (indice_inicio_vet_2 < fim_vet) { vetor_aux [indice_aux] = vetor[indice_inicio_vet_2]; indice_aux = indice_aux + 1; indice_inicio_vet_2 = indice_inicio_vet_2 + 1; } Para (indice_inicio = inicio_vet; indice_inicio < fim_vet; indice_inicio++) { vetor[indice_inicio] = vetor_aux [indice_inicio - inicio_vet]; } liberar_memoria (vetor_aux);}
![Page 7: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/7.jpg)
Intercalação usada para ordenação Algoritmo MergeSort utiliza a idéia de intercalação para
ordenar registros.
Algoritmo criado por von Neumann
Complexidade O(NlogN) no caso médio e pior
No pior caso é mais rápido do que o QuickSort
Exemplo: Ordenar 10000 chaves:
Algoritmos de O(N2): 100.000.000 comparações
MergeSort: 40.000 comparações
![Page 8: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/8.jpg)
MergeSort
A idéia central é unir dois arrays que já estejam ordenados. Ou seja, unir dois arrays A e B já ordenados e criar um terceiro array C que contenha os elementos de A e B já ordenados na ordem correta.
O foco inicial é no processo de junção dos arrays e posteriormente vamos trabalhar o processo de ordenação
![Page 9: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/9.jpg)
Cenário
Considere que temos dois arrays já ordenados A e B que não precisam ser do mesmo tamanho onde A possui 4 elementos e B possui 6 elementos. Eles serão unidos para a criação de um array C com 10 elementos ao final do processo de união
![Page 10: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/10.jpg)
Cenário
23 47 81 95
7 14 39 55 62 74
7 14 23 39 47 55 62 74 81 95
23 < 7 ? 23 < 14 ?47 < 39 ? 81 < 55 ? 81 < 62 ?
81 < 74 ?
Não há elementos em B
23 < 39 ? 47 < 55 ?
A
B
C
![Page 11: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/11.jpg)
Ordenação
A idéia do método MergeSort é dividir um array ao meio, ordenar cada metade e depois unir estas duas metades novamente formando o array original, porém ordenado.
Como seria feita essa divisão e ordenação para que as metades possam ser unidas?
RECURSIVIDADE!
![Page 12: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/12.jpg)
Ordenação
![Page 13: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/13.jpg)
O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições
Três passos são fundamentais para a execução do mergesort: Dividir: Dividir os dados em subsequências pequenas; Conquistar: Classifcar as duas metades recursivamente aplicando o mergesort;
Combinar: Juntar as duas metades em um único conjunto já classifcado
![Page 14: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/14.jpg)
O algoritmo MergeSort Dividir para conquistar O algoritmo é executado de forma recursiva Primeiro ordenar a primeira metade, em seguida a segunda metade
mergesort(inteiro *vetor,inteiro inicio,inteiro fim){ inteiro meio;
Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}}
![Page 15: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/15.jpg)
O algoritmo MergeSort Considere o vetor abaixo:
26 69 25 53 59 27 41 0 33 16 35 43
![Page 16: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/16.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
26 69 25 53 59 27
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 17: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/17.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
26 69 25 53 59 27
26 69 25
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 18: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/18.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
25
26 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 19: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/19.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
25
26 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 20: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/20.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
26 69 25
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 21: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/21.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
26 69 25
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 22: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/22.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
25
26 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 23: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/23.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
25
26 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 24: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/24.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
25 26
69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 25: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/25.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
53 59 27
25 26 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 26: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/26.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 6925 26 69 27
53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 27: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/27.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69 27
53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 28: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/28.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69
53 59 27
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 29: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/29.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69
53 59 27
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 30: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/30.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69 27
53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 31: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/31.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69 27 53
59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 32: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/32.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69 27 53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 33: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/33.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 69 27 53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 34: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/34.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25
26 69 27 53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 35: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/35.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25
26 69 27 53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 36: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/36.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26
69 27 53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 37: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/37.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 27
69 53 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 38: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/38.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 27 53
69 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 39: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/39.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 27 53
69 59
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 40: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/40.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 27 53 59
69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 41: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/41.jpg)
O algoritmo MergeSort Execução:
41 0 33 16 35 43
25 26 27 53 59 69
![Page 42: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/42.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 41 0 33 16 35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 43: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/43.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
41 0 33
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 44: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/44.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
33
41 0
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 45: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/45.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
33
41 0
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 46: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/46.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
33
41 0
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 47: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/47.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
0 41 33
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 48: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/48.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
0 41 33
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 49: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/49.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
0
41 33
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 50: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/50.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
0 33
41
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 51: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/51.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 16 35 43
0 33 41
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 52: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/52.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 43
16 35
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 53: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/53.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 43
16 35
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 54: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/54.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 43
16 35
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 55: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/55.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 43
16
35
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 56: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/56.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41
16 35
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
43
![Page 57: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/57.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41
16 35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 58: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/58.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 16
35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 59: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/59.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 16 35
43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 60: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/60.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69
0 33 41 16 35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 61: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/61.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 0
33 41 16 35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 62: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/62.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 0 16
33 41 35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 63: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/63.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 0 16 33
41 35 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 64: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/64.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 0 16 33 35
41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 65: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/65.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 0 16 33 35 41
43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 66: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/66.jpg)
O algoritmo MergeSort Execução:
25 26 27 53 59 69 0 16 33 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 67: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/67.jpg)
O algoritmo MergeSort Execução:
0
25 26 27 53 59 69 16 33 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 68: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/68.jpg)
O algoritmo MergeSort Execução:
0 16
25 26 27 53 59 69 33 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 69: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/69.jpg)
O algoritmo MergeSort Execução:
0 16 25
26 27 53 59 69 33 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 70: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/70.jpg)
O algoritmo MergeSort Execução:
0 16 25 26
27 53 59 69 33 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 71: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/71.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27
53 59 69 33 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 72: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/72.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27 33
53 59 69 35 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 73: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/73.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27 33 35
53 59 69 41 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 74: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/74.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27 33 35 41
53 59 69 43
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 75: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/75.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27 33 35 41 43
53 59 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 76: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/76.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27 33 35 41 43 53
59 69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 77: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/77.jpg)
O algoritmo MergeSort Execução:
0 16 25 26 27 33 35 41 43 53 59
69
...Se (inicio < fim) {
meio = (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}...
![Page 78: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/78.jpg)
O algoritmo MergeSort Vetor Ordenado:
0 16 25 26 27 33 35 41 43 53 59 69
![Page 79: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/79.jpg)
O algoritmo MergeSort
principal{ inteiro vetor[] = {7, 6, 5, 4, 8, 22, 3, 55, 7, 99, 11, 3, 1, 88}; inteiro tamanho; inteiro indice;
//Pode-se usar a função sizeof() tamanho tamanho_vetor / tamanho_de_um_inteiro; mergesort(vetor, 0, tamanho);
}
Implementação do algoritmo MergeSort:
![Page 80: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/80.jpg)
O algoritmo MergeSort Implementação do algoritmo MergeSort:
mergesort(inteiro *vetor,inteiro inicio,inteiro fim){ inteiro meio;
Se (inicio < fim) {
meio (inicio + fim) / 2; mergesort(vetor, inicio, meio); mergesort(vetor, meio+1, fim); intercala(vetor, inicio, meio, fim);
}}
![Page 81: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/81.jpg)
O algoritmo MergeSort Implementação do algoritmo MergeSort:
intercala(inteiro *vetor, inteiro inicio, inteiro meio, inteiro fim){ inteiro indice_inicio; inteiro indice_meio; inteiro indice_aux; inteiro *vetor_aux;
indice_inicio inicio; indice_meio meio+1; indice_aux 0;
vetor_aux alocacao_memoria(vetor); ...... //Continua no slide posterior
![Page 82: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/82.jpg)
O algoritmo MergeSort Implementação do algoritmo MergeSort:enquanto(indice_inicio < meio+1 ou indice_meio < fim+1) { se (indice_inicio = meio+1) { vetor_aux[indice_aux] vetor[indice_meio]; indice_meio indice_meio + 1; indice_aux indice_aux + 1;
} senao se (indice_meio = fim+1) { vetor_aux[indice_aux] vetor[indice_inicio]; indice_inicio indice_inicio + 1; indice_aux indice_aux + 1;
} senao se (vetor[indice_inicio] <= vetor[indice_meio]) { vetor_aux[indice_aux] vetor[indice_inicio]; indice_inicio indice_inicio + 1; indice_aux indice_aux + 1;
} senao { vetor_aux[indice_aux] vetor[indice_meio];
indice_meio indice_meio + 1; indice_aux indice_aux + 1;
} } ... //Continua no slide posterior
![Page 83: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/83.jpg)
O algoritmo MergeSort Implementação do algoritmo MergeSort:
// copia vetor intercalado para o vetor original para(indice_inicio = inicio;indice_inicio <= fim;indice_inicio=indice_inicio+1) vetor[indice_inicio] vetor_aux[indice_inicio-inicio];
libera_memoria(vetor_aux);
}
![Page 84: Slide sem título§ão-MergeSort1.pdf · O algoritmo MergeSort O algoritmo divide a sequência original em pares de dados, classifcando e intercalando os elementos das partições](https://reader033.vdocuments.site/reader033/viewer/2022041619/5e3df787e54cd77d3f5303a0/html5/thumbnails/84.jpg)
Estudo da estabilidade
O algoritmo é considerado estável, pois não há a possibilidade de elementos iguais mudar de posição no processo de ordenação
A fase de divisão do algoritmo não altera a posição de nenhuma chave
Ordenação é feita pelo algoritmo de intercalação
A intercalação é feita verificando, sequencialmente, os elementos de acordo com sua posição no array
Dessa forma, elementos com mesma chave não terão a sua posição relativa alterada