Beruflich Dokumente
Kultur Dokumente
Dados Bsicas I.
Aula 10 Algoritmos de ordenao IV
Prof. Eiji Adachi M. Barbosa
Avisos
Prova ser no dia 15/09/2016
Turma 3 - 2016.1
Objetivos
Apresentar e implementar algoritmo de
ordenao por intercalao (Merge sort)
Turma 3 - 2016.1
Referncia extra
Notas de aula Anlise de algoritmos, prof. Paulo
Feofiloff, IME-USP:
http://www.ime.usp.br/~pf/algoritmos/aulas/mrgsrt.html
Turma 3 - 2016.1
ORDENAO POR
INTERCALAO
Turma 3 - 2016.1
Ideia geral
A partir de dois vetores ordenados, posso
construir um outro tambm ordenado
v1 1
w
3
1
Turma 3 - 2016.1
3
2
5
3
7
3
v2 2
9 10
9 10
v1
Turma 3 - 2016.1
9 10
v2
1
i
tmp
fim2
9 10
k
i: elemento atual de v1
j: elemento atual de v2
k: 1 posio livre de tmp
Turma 3 - 2016.1
tmp
fim2
9 10
Turma 3 - 2016.1
tmp
fim2
9 10
1
k
Turma 3 - 2016.1
10
tmp
fim2
9 10
2
k
11
tmp
fim2
9 10
3
k
12
tmp
fim2
9 10
3
k
13
fim2
tmp
9 10
3
k
14
fim2
tmp
9 10
5
k
15
fim2
tmp
9 10
7
k
16
tmp
fim2
9 10
7
k
17
fim2
tmp
9 10
7
k
18
fim2
tmp
9 10
j
7
k
19
fim2
9 10
tmp
9
k
20
fim2
9 10
tmp
9 10
k
21
Intercalao
J sei intercalar,
mas como
conseguir dois
vetores ordenados?
Qual o caso trivial do vetor ordenado?
2016.1
23
Conquistar:
Intercalar vetores de tamanho 1, formando vetores de tamanho
2
Intercalar vetores de tamanho 2, formando vetores de tamanho
4
Intercalar vetores de tamanho 4, formando vetores de tamanho
8
...
Intercalar vetores de tamanho n/2, formando vetor de tamanho n
Turma 3 - 2016.1
24
Qual a complexidade
(pior e melhor caso)?
Turma 3 - 2016.1
25
Turma 3 - 2016.1
26
Dividindo por n:
T(n) / n = T(n/2) / (n/2) + 1
...
T(n)/n = T(1)/1 + log2n
T(n) = n * (1 + log2n)
T(n) = n + n*log2n
Turma 3 - 2016.1
27
Turma 3 - 2016.1
28
29
Estrutura de
Dados Bsicas I.
Aula 9 Algoritmos de ordenao II
Prof. Eiji Adachi M. Barbosa