53

Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Merge Sort

Profa. Sheila Morais de Almeida

DAINF-UTFPR-PG

junho - 2018

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 1 / 53

Page 2: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Este material é preparado usando como referências os textos dos seguintes

livros.

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 2 / 53

Page 3: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista

Divisão e Conquista é uma técnica de projeto de algoritmos que consiste

em dividir o problema original em subproblemas, resolver esses

subproblemas e combinar essas soluções para obter a solução do problema

original.

Dica: Normalmente, os resultados são melhores se você divide o problema

original em subproblemas de tamanhos parecidos (iguais, se possível).

Exemplo de algoritmo de Divisão e Conquista: MergeSort ou

ordenação por intercalação.

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 3 / 53

Page 4: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Você se lembra de como funciona o MergeSort?

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 4 / 53

Page 5: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 5 / 53

Page 6: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 9 43

11 25 69 7

7240

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 6 / 53

Page 7: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 9 43

84 9

11 25 69 7

7240

43

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 7 / 53

Page 8: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 9 43

84 9

84 9

11 25 69 7

7240

43

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 8 / 53

Page 9: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 9 43

84 9

9

11 25 69 7

7240

43

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 9 / 53

Page 10: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 9 43

84

9 84

11 25 69 7

7240

43

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 10 / 53

Page 11: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 9 43

849 43

11 25 69 7

7240

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 11 / 53

Page 12: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

849 43

9

11 25 69 7

7240

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 12 / 53

Page 13: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84 43

9 43

11 25 69 7

7240

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 13 / 53

Page 14: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

43 84

84 9 72 11 25 6940 743

84 9 724043

84

9

11 25 69 7

7240

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 14 / 53

Page 15: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84439

11 25 69 7

7240

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 15 / 53

Page 16: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84439 7240

40 72

11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 16 / 53

Page 17: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84439

40 72

40

11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 17 / 53

Page 18: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84439 40

72

72

11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 18 / 53

Page 19: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84 9 724043

84439 40 72

11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 19 / 53

Page 20: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84439 40 72

9 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 20 / 53

Page 21: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

8443 40 72

9 40 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 21 / 53

Page 22: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

8443

40

72

9 43 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 22 / 53

Page 23: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84

4340

72

9 72 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 23 / 53

Page 24: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

84

4340 729 84 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 24 / 53

Page 25: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 25 69 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 25 / 53

Page 26: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 25 69 7

11 25

11 25

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 26 / 53

Page 27: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 25 69 7

11 25 7

769

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 27 / 53

Page 28: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 25 69 7

11 25 7

69

69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 28 / 53

Page 29: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 25 69 7

11 25 7 69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 29 / 53

Page 30: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 7

11 25 7 69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 30 / 53

Page 31: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 117

11 25 69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 31 / 53

Page 32: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 257

25 69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 32 / 53

Page 33: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 257

69

69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 33 / 53

Page 34: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

84 9 72 11 25 6940 743

844340 729 11 257 69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 34 / 53

Page 35: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

844340 729 11 25 697

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 35 / 53

Page 36: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

844340 729 11 25 69

9

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 36 / 53

Page 37: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

844340 72 11 25 69

9 11

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 37 / 53

Page 38: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

844340 72 25 69

9 11 25

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 38 / 53

Page 39: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

844340 72 69

9 11 25 40

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 39 / 53

Page 40: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

8443 72 69

9 11 25 40 43

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 40 / 53

Page 41: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

8472 69

9 11 25 40 43 69

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 41 / 53

Page 42: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

8472

9 11 25 40 43 69 72

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 42 / 53

Page 43: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7

84

9 11 25 40 43 69 72 84

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 43 / 53

Page 44: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

7 9 11 25 40 43 69 72 84

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 44 / 53

Page 45: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Qual a complexidade do MergeSort?

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 45 / 53

Page 46: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Merge_Sort(V [ ], p, r)Se p < r , então:

q ←⌊ r+p

2

⌋Merge_Sort(V , p, q)Merge_Sort(V , q + 1, r)Merge(V , p, q, r)

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 46 / 53

Page 47: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Merge_Sort(V [ ], p, r)Se p < r , então: 1

q ←⌊ r+p

2

⌋3

Merge_Sort(V , p, q) T (n2)

Merge_Sort(V , q + 1, r) T (n2)

Merge(V , p, q, r) M(n)

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 47 / 53

Page 48: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Merge(V [ ], p, q, r)i ← p; j ← q + 1; h← 0; 4

Aloque vetor temporário W [0..r − 1]; assumindo que uma página

de memória é su�ciente, muito barato

Enquanto i ≤ q e j ≤ r faça: 2n (verdadeiro n-1 vezes)

Se V [i ] ≤ V [j ] então: n-1

W [h]← V [i ]; i ← i + 1; 3(n − 1)Senão:

W [h]← V [j ]; j ← j + 1; rodou a de cima, não roda nesta

h← h + 1 2(n − 1)Enquanto i ≤ q faça: 2

W [h]← V [i ]; h← h + 1; i ← i + 1; 5

Enquanto j ≤ r faça: 1 (falso aqui ou no de cima)

W [h]← V [j ]; h← h + 1; j ← j + 1; 0

Para i de p até r faça: 3(n + 1)− 1 = 3n + 2

V [i ]←W [i − p]; 2n

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 48 / 53

Page 49: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Complexidade da função Merge() em um vetor com n elementos:

M(n) = 13n + 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 49 / 53

Page 50: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Merge_Sort(V [ ], p, r)Se p < r , então: 1

q ←⌊ r+p

2

⌋3

Merge_Sort(V , p, q) T (n2)

Merge_Sort(V , q + 1, r) T (n2)

Merge(V , p, q, r) 13n + 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 50 / 53

Page 51: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Complexidade do Algoritmo Merge_Sort: análise de tempo em um vetor

com n elementos, onde: r − p + 1 = n.

T (n) =

{1, se n = 1;2T (

⌈n2

⌉) + 13n + 7, se n > 1.

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 51 / 53

Page 52: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Solução da relação de recorrência.n T (n)

1 = 20 1

2 = 21 2T (1) + 13(2) + 7 = 2+ 13(2) + 7

4 = 22 2T (2) + 13(22) + 7

= 22 + (13)22 + 2(7) + 13(22) + 7

= 22 + 2(22)(13) + 2(7) + 7 = 22 + 2(22)(13) + 2(7) + 7

8 = 23 2T (4) + 13(23) + 7

= 23 + 2(23)(13) + 22(7) + 2(7) + 13(23) + 7

= 23 + 3(23)(13) + 22(7) + 2(7) + 7

16 = 24 2T (8) + 13(24) + 7

= 24 + 3(24)(13) + 23(7) + 22(7) + 2(7) + 13(24) + 7

= 24 + 4(24)(13) + 23(7) + 22(7) + 2(7) + 7

2k 2k + k(2k)(13) + 2k−1(7) + 2k−2(7) + . . .+ 2(7) + 7

= 2k + k(2k)(13) +∑k−1

i=0 (2i (7))

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 52 / 53

Page 53: Merge Sort - sheilaalmeida.pro.br · Exemplo de algoritmo de Divisão e Conquista: MergeSort ou ordenação por intercalação. Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho -

Divisão e Conquista: MergeSort

Solução da relação de recorrência.

T (2k) = 2k + k(2k)(13) +∑k−1

i=0 (2i (7))

T (2k) = 2k + k(2k)(13) + 7∑k−1

i=0 (2i ) = 2k + k(2k)(13) + 7(2k − 1)

T (2k) = (1+ 13k)2k + 7(2k)− 7 = (13k + 8)2k − 7

Quando 2k = n temos k = log2 n,

T (n) = (13 log2 n + 8)n − 7 = 13n log2 n + 8n − 7

Sheila Almeida (DAINF-UTFPR-PG) Merge Sort junho - 2018 53 / 53