Escolar Documentos
Profissional Documentos
Cultura Documentos
Agenda
• Funcionamento básico
• Algoritmo em C#
• Conclusão
Agenda
• Funcionamento básico
• Algoritmo em C#
• Conclusão
Introdução
• Ordenação por intercalação
Introdução
• Ordenação por intercalação
Funcionamento Básico
• Dividir sistematicamente o array em subarrays até que os mesmos tenham
tamanho um
Exemplo
95 15 42 4 23 16 8 77
Dividir
Exemplo
95 15 42 4 23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
95 15 42 4
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
95 15 42 4
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
95 15 42 4
95 15
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
42 4
95 15
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 42 4
95 x
15
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 42 4
95x x
15
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 42 4
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 42 4
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 42 4
42 4
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95
42 4
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 4
42 x4
---------------------------- Algoritmos e Estruturas de Dados (33)
Mergesort
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 4 42
x
42 x4
---------------------------- Algoritmos e Estruturas de Dados (34)
Mergesort
Exemplo
95 15 42 4 23 16 8 77
95 15 42 4 23 16 8 77
15 95 4 42
Exemplo
95 15 42 4 23 16 8 77
23 16 8 77
15 95 4 42
Exemplo
95 15 42 4 23 16 8 77
4 23 16 8 77
15 95 x4 42
Exemplo
95 15 42 4 23 16 8 77
4 15 23 16 8 77
x
15 95 x4 42
Exemplo
95 15 42 4 23 16 8 77
4 15 42 23 16 8 77
x
15 95 x4 42
x
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
x 95
15 x x4 42
x
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
23 16 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
23 16 8 77
23 16
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
8 77
23 16
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 8 77
23 x
16
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8 77
x
23 x
16
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8 77
8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23
8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8
x8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8 77
x8 x
77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 23 16 8 77
16 23 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95
16 23 8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 8
16 23 x8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 8 16
x
16 23 x8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 8 16 23
x 23
16x x8 77
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 8 16 23 77
x 23
16x x8 77
x
Exemplo
95 15 42 4 23 16 8 77
4 15 42 95 8 16 23 77
Exemplo
4 15 42 95 8 16 23 77
Exemplo
x4 15 42 95 8 16 23 77
Exemplo
4 8
x4 15 42 95 x8 16 23 77
Exemplo
4 8 15
x4 x15 42 95 x8 16 23 77
Exemplo
4 8 15 16
x4 x15 42 95 x8 16
x 23 77
Exemplo
4 8 15 16 23
x4 x15 42 95 x8 16
x 23
x 77
Exemplo
4 8 15 16 23 42
x4 x15 42
x 95 x8 16
x 23
x 77
Exemplo
4 8 15 16 23 42 77
x4 x15 42
x 95 x8 16
x 23
x 77
x
Exemplo
4 8 15 16 23 42 77 95
x4 x15 42
x 95
x x8 16
x 23
x 77
x
Exemplo
4 8 15 16 23 42 77 95
Agenda
• Funcionamento básico
• Algoritmo em C#
• Conclusão
Algoritmo em C#
void mergesort(int esq, int dir) {
if (esq < dir){
int meio = (esq + dir) / 2;
mergesort(esq, meio);
mergesort(meio + 1, dir);
intercalar(esq, meio, dir);
}
}
Algoritmo em C#
void intercalar(int esq, int meio, int dir){
//Definir tamanho dos dois subarrays
int nEsq = (meio+1)-esq;
int nDir = dir - meio;
...
---------------------------- Algoritmos e Estruturas de Dados (74)
Mergesort
Algoritmo em C#
Agenda
• Funcionamento básico
• Algoritmo em C#
• Conclusão
{ C(1) = 0
C(n) = 2C(n/2) + 𝚯(n)
𝚯(n*lg(n))
{ M(1) = 0
M(n) = 2M(n/2) + 𝚯(n)
𝚯(n*lg(n))
Agenda
• Funcionamento básico
• Algoritmo em C#
• Conclusão
Conclusão
• Método estável
Exercício (1)
• Mostre todas as comparações e movimentações do algoritmo anterior para
o array abaixo: