clrs 6 - instituto de matemática e estatística | ime-uspcris/aulas/13_1_338/slides/aula9.pdf ·...
TRANSCRIPT
![Page 1: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/1.jpg)
Heapsort
CLRS 6
Algoritmos – p. 1
![Page 2: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/2.jpg)
Heap
Um vetor A[1 . .m] é um (max-)heap se
A[⌊i/2⌋] ≥ A[i]
para todo i = 2, 3, . . . ,m.
De uma forma mais geral, A[j . .m] é um heap se
A[⌊i/2⌋] ≥ A[i]
para todo i = 2j, 2j + 1, 4j, . . . , 4j + 3, 8j, . . . , 8j + 7, . . ..
Neste caso também diremos que a subárvore com raiz j éum heap.
Algoritmos – p. 2
![Page 3: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/3.jpg)
Exemplo
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
51
51
46
46
17
17
34
34
41
41
15
15
14
14
23
23
30
30
21
21 10
10 12
12
Algoritmos – p. 3
![Page 4: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/4.jpg)
Desce-HeapRecebe A[1 . .m] e i ≥ 1 tais que subárvores com raiz 2i e2i + 1 são heaps e rearranja A de modo que subárvore comraiz i seja heap.
DESCE-HEAP (A,m, i)1 e← 2i2 d← 2i + 13 se e ≤ m e A[e] > A[i]4 então maior ← e5 senão maior ← i6 se d ≤ m e A[d] > A[maior ]7 então maior ← d8 se maior 6= i9 então A[i]↔ A[maior ]
10 DESCE-HEAP (A,m,maior )
Algoritmos – p. 4
![Page 5: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/5.jpg)
Sim
ulaç
ão
1
1
22
3
3
4
4
5
5
6
6
7
7
8
8
9
910
10
11
11
12
12
níve
l
0 1 2 3
13
13
46 46
17
17
34
34
41
41
15
15
14
14
23
23
30
30
21
2110
1012
12
Alg
oritm
os–
p.5
![Page 6: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/6.jpg)
Sim
ulaç
ão
1
1
22
3
3
4
4
5
5
6
6
7
7
8
8
9
910
10
11
11
12
12
níve
l
0 1 2 3
46
46
13 13
17
17
34
34
41
41
15
15
14
14
23
23
30
30
21
2110
1012
12
Alg
oritm
os–
p.6
![Page 7: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/7.jpg)
Sim
ulaç
ão
1
1
22
3
3
4
4
5
5
6
6
7
7
8
8
9
910
10
11
11
12
12
níve
l
0 1 2 3
46
46
41 41
17
17
34
34
13
13
15
15
14
14
23
23
30
30
21
2110
1012
12
Alg
oritm
os–
p.7
![Page 8: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/8.jpg)
Sim
ulaç
ão
1
1
22
3
3
4
4
5
5
6
6
7
7
8
8
9
910
10
11
11
12
12
níve
l
0 1 2 3
46
46
41 41
17
17
34
34
21
21
15
15
14
14
23
23
30
30
13
1310
1012
12
Alg
oritm
os–
p.8
![Page 9: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/9.jpg)
Sim
ulaç
ão
1
1
22
3
3
4
4
5
5
6
6
7
7
8
8
9
910
10
11
11
12
12
níve
l
0 1 2 3
46
46
41 41
17
17
34
34
21
21
15
15
14
14
23
23
30
30
13
1310
1012
12
Alg
oritm
os–
p.9
![Page 10: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/10.jpg)
Consumo de tempo
T (h) := consumo de tempo no pior caso
linha todas as execuções da linha1-3 = Θ(1)
4-5 = Θ(1)
6 = Θ(1)
7 = O(1)
8 = Θ(1)
9 = O(1)
10 ≤ T (h− 1)
total ≤ T (h− 1) + Θ(1)
Algoritmos – p. 10
![Page 11: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/11.jpg)
Consumo de tempo
T (h) := consumo de tempo no pior caso
Recorrência associada:
T (h) ≤ T (h− 1) + Θ(1),
pois altura de maior é h− 1.
Algoritmos – p. 11
![Page 12: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/12.jpg)
Consumo de tempo
T (h) := consumo de tempo no pior caso
Recorrência associada:
T (h) ≤ T (h− 1) + Θ(1),
pois altura de maior é h− 1.
Solução assintótica: T (n) é ???.
Algoritmos – p. 11
![Page 13: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/13.jpg)
Consumo de tempo
T (h) := consumo de tempo no pior caso
Recorrência associada:
T (h) ≤ T (h− 1) + Θ(1),
pois altura de maior é h− 1.
Solução assintótica: T (n) é O(h).
Como h ≤ lg m, podemos dizer que:
O consumo de tempo do algoritmo DESCE-HEAP éO(lg m) (ou melhor ainda, O(h)).
Algoritmos – p. 11
![Page 14: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/14.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
17
17
15
15
10
10
46
46
23
23
12
12
41
41 30
30 21
21
Algoritmos – p. 12
![Page 15: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/15.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
17
17
15
15
10
10
46
46
23
23
12
12
41
41 30
30 21
21
Algoritmos – p. 13
![Page 16: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/16.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
17
17
15
15
21
21
46
46
23
23
12
12
41
41 30
30 10
10
Algoritmos – p. 14
![Page 17: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/17.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
17
17
15
15
21
21
46
46
23
23
12
12
41
41 30
30 10
10
Algoritmos – p. 15
![Page 18: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/18.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
17
17
41
41
21
21
46
46
23
23
12
12
15
15 30
30 10
10
Algoritmos – p. 16
![Page 19: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/19.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
17
17
41
41
21
21
46
46
23
23
12
12
15
15 30
30 10
10
Algoritmos – p. 17
![Page 20: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/20.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
23
23
41
41
21
21
46
46
17
17
12
12
15
15 30
30 10
10
Algoritmos – p. 18
![Page 21: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/21.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
34
34
23
23
41
41
21
21
46
46
17
17
12
12
15
15 30
30 10
10
Algoritmos – p. 19
![Page 22: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/22.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
46
46
23
23
41
41
21
21
34
34
17
17
12
12
15
15 30
30 10
10
Algoritmos – p. 20
![Page 23: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/23.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
13
13
46
46
23
23
41
41
21
21
34
34
17
17
12
12
15
15 30
30 10
10
Algoritmos – p. 21
![Page 24: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/24.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
41
41
46
46
23
23
13
13
21
21
34
34
17
17
12
12
15
15 30
30 10
10
Algoritmos – p. 22
![Page 25: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/25.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
41
41
46
46
23
23
30
30
21
21
34
34
17
17
12
12
15
15 13
13 10
10
Algoritmos – p. 23
![Page 26: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/26.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
14
14
41
41
46
46
23
23
30
30
21
21
34
34
17
17
12
12
15
15 13
13 10
10
Algoritmos – p. 24
![Page 27: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/27.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
46
46
41
41
14
14
23
23
30
30
21
21
34
34
17
17
12
12
15
15 13
13 10
10
Algoritmos – p. 25
![Page 28: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/28.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
46
46
41
41
34
34
23
23
30
30
21
21
14
14
17
17
12
12
15
15 13
13 10
10
Algoritmos – p. 26
![Page 29: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/29.jpg)
Construção de um heap
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
46
46
41
41
34
34
23
23
30
30
21
21
14
14
17
17
12
12
15
15 13
13 10
10
Algoritmos – p. 27
![Page 30: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/30.jpg)
Construção de um heap
Recebe um vetor A[1 . . n] e rearranja A para que seja heap.
CONSTRÓI-HEAP (A, n)2 para i← ⌊n/2⌋ decrescendo até 1 faça3 DESCE-HEAP (A, n, i)
Relação invariante:
(i0) no início de cada iteração, i + 1, . . . , n são raízes deheaps.
T (n) := consumo de tempo no pior caso
Algoritmos – p. 28
![Page 31: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/31.jpg)
Construção de um heap
Recebe um vetor A[1 . . n] e rearranja A para que seja heap.
CONSTRÓI-HEAP (A, n)2 para i← ⌊n/2⌋ decrescendo até 1 faça3 DESCE-HEAP (A, n, i)
Relação invariante:
(i0) no início de cada iteração, i + 1, . . . , n são raízes deheaps.
T (n) := consumo de tempo no pior caso
Análise grosseira: T (n) é n
2O(lg n) = O(n lg n).
Análise mais cuidadosa: T (n) é ????.
Algoritmos – p. 28
![Page 32: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/32.jpg)
T (n) éO(n)
Prova: O consumo de DESCE-HEAP (A, n, i) é proporcionala h. h = ⌊lg n+1
i+1⌋. Logo,
T (n) =
⌊lg n⌋∑
h=1
2⌊lg n⌋−hh
≤
⌊lg n⌋∑
h=1
n
2hh
≤ n
(
1
21+
2
22+
3
23+ · · · +
⌊lg n⌋
2⌊lg n⌋
)
< n1/2
(1− 1/2)2
= 2n.
Algoritmos – p. 29
![Page 33: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/33.jpg)
T (n) éO(n)
Prova: O consumo de tempo de DESCE-HEAP (A, n, i) éO(h), onde h é a altura da árvore de raiz i. Logo,
T (n) =
⌊lg n⌋∑
h=0
2⌊lg n⌋−hO(h)
= O
(
n
⌊lg n⌋∑
h=0
h
2h
)
= O
(
n
∞∑
h=0
h
2h
)
= O
(
n1/2
(1− 1/2)2
)
= O(2n) = O(n)Algoritmos – p. 30
![Page 34: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/34.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
46
46
41
41
34
34
23
23
30
30
21
21
14
14
17
17
12
12
15
15 13
13 10
10
Algoritmos – p. 31
![Page 35: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/35.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
10
10
41
41
34
34
23
23
30
30
21
21
14
14
17
17
12
12
15
15 13
13 46
46
Algoritmos – p. 32
![Page 36: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/36.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
41
41
10
10
34
34
23
23
30
30
21
21
14
14
17
17
12
12
15
15 13
13 46
46
Algoritmos – p. 33
![Page 37: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/37.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
41
41
30
30
34
34
23
23
10
10
21
21
14
14
17
17
12
12
15
15 13
13 46
46
Algoritmos – p. 34
![Page 38: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/38.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
41
41
30
30
34
34
23
23
15
15
21
21
14
14
17
17
12
12
10
10 13
13 46
46
Algoritmos – p. 35
![Page 39: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/39.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
41
41
30
30
34
34
23
23
15
15
21
21
14
14
17
17
12
12
10
10 13
13 46
46
Algoritmos – p. 36
![Page 40: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/40.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
13
13
30
30
34
34
23
23
15
15
21
21
14
14
17
17
12
12
10
10 41
41 46
46
Algoritmos – p. 37
![Page 41: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/41.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
13
13
30
30
34
34
23
23
15
15
21
21
14
14
17
17
12
12
10
10 41
41 46
46
Algoritmos – p. 38
![Page 42: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/42.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
34
34
30
30
13
13
23
23
15
15
21
21
14
14
17
17
12
12
10
10 41
41 46
46
Algoritmos – p. 39
![Page 43: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/43.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
34
34
30
30
21
21
23
23
15
15
13
13
14
14
17
17
12
12
10
10 41
41 46
46
Algoritmos – p. 40
![Page 44: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/44.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
34
34
30
30
21
21
23
23
15
15
13
13
14
14
17
17
12
12
10
10 41
41 46
46
Algoritmos – p. 41
![Page 45: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/45.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
10
10
30
30
21
21
23
23
15
15
13
13
14
14
17
17
12
12
34
34 41
41 46
46
Algoritmos – p. 42
![Page 46: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/46.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
10
10
30
30
21
21
23
23
15
15
13
13
14
14
17
17
12
12
34
34 41
41 46
46
Algoritmos – p. 43
![Page 47: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/47.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
30
30
10
10
21
21
23
23
15
15
13
13
14
14
17
17
12
12
34
34 41
41 46
46
Algoritmos – p. 44
![Page 48: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/48.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
30
30
23
23
21
21
10
10
15
15
13
13
14
14
17
17
12
12
34
34 41
41 46
46
Algoritmos – p. 45
![Page 49: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/49.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
30
30
23
23
21
21
17
17
15
15
13
13
14
14
10
10
12
12
34
34 41
41 46
46
Algoritmos – p. 46
![Page 50: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/50.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
30
30
23
23
21
21
17
17
15
15
13
13
14
14
10
10
12
12
34
34 41
41 46
46
Algoritmos – p. 47
![Page 51: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/51.jpg)
Heap sort
Interferência!
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9 10
10
11
11
12
12
nível
0
1
2
3
12
12
23
23
21
21
17
17
15
15
13
13
14
14
10
10
30
30
34
34 41
41 46
46
Algoritmos – p. 48
![Page 52: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/52.jpg)
Heap sortAlgoritmo rearranja A[1 . . n] em ordem crescente.
HEAPSORT (A, n)
0 CONSTRÓI-HEAP (A, n) � pré-processamento1 m← n2 para i← n decrescendo até 2 faça3 A[1]↔ A[i]4 m← m− 15 DESCE-HEAP (A,m, 1)
Relações invariantes: Na linha 2 vale que:
(i0) A[m. . n] é crescente;
(i1) A[1 . .m] ≤ A[m + 1];
(i2) A[1 . .m] é um heap.Algoritmos – p. 49
![Page 53: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/53.jpg)
Consumo de tempo
linha todas as execuções da linha0 = Θ(n)
1 = Θ(1)
2 = Θ(n)
3 = Θ(n)
4 = Θ(n)
5 = nO(lg n)
total = nO(lg n) + Θ(n) = O(n lg n)
O consumo de tempo do algoritmo HEAPSORT éO(n lg n).
Algoritmos – p. 50
![Page 54: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/54.jpg)
ExercíciosExercício 9.AA altura de i em A[1 . . m] é o comprimento da mais longa seqüência da forma
〈filho(i), filho(filho(i)), filho(filho(filho(i))), . . .〉
onde filho(i) vale 2i ou 2i + 1. Mostre que a altura de i é ⌊lg m
i⌋.
É verdade que ⌊lg m
i⌋ = ⌊lg m⌋ − ⌊lg i⌋?
Exercício 9.BMostre que um heap A[1 . . m] tem no máximo ⌈m/2h+1⌉ nós com altura h.
Exercício 9.CMostre que ⌈m/2h+1⌉ ≤ m/2h quando h ≤ ⌊lg m⌋.
Exercício 9.DMostre que um heap A[1 . . m] tem no mínimo ⌊m/2h+1⌋ nós com altura h.
Exercício 9.EConsidere um heap A[1 . . m]; a raiz do heap é o elemento de índice 1. Seja m′ o númerode elementos do “sub-heap esquerdo”, cuja raiz é o elemento de índice 2. Seja m′′ onúmero de elementos do “sub-heap direito”, cuja raiz é o elemento de índice 3. Mostre que
m′′ ≤ m′ < 2m/3 .Algoritmos – p. 51
![Page 55: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/55.jpg)
Mais execícios
Exercício 9.FMostre que a solução da recorrência
T (1) = 1
T (k) ≤ T (2k/3) + 5 para k ≥ 2
é O(log k). Mais geral: mostre que se T (k) = T (2k/3) + O(1) então O(log k).(Curiosidade: Essa é a recorrência do DESCE-HEAP (A, m, i) se interpretarmos k comosendo o número de nós na subárvore com raiz i).
Exercício 9.GEscreva uma versão iterativa do algoritmo DESCE-HEAP. Faça uma análise do consumode tempo do algoritmo.
Algoritmos – p. 52
![Page 56: CLRS 6 - Instituto de Matemática e Estatística | IME-USPcris/aulas/13_1_338/slides/aula9.pdf · Desce-Heap Recebe A[1..m] e i ≥1 tais que subárvores com raiz 2i e 2i+1 são heaps](https://reader036.vdocuments.pub/reader036/viewer/2022071014/5fccffdb4cb80c6909665c39/html5/thumbnails/56.jpg)
Mais exercícios ainda
Exercício 9.HDiscuta a seguinte variante do algoritmo DESCE-HEAP:
D-H (A, m, i)
1 e← 2i
2 d← 2i + 1
3 se e ≤ m e A[e] > A[i]
4 então A[i]↔ A[e]
5 D-H (A, m, e)
6 se d ≤ m e A[d] > A[i]
7 então A[i]↔ A[d]
8 D-H (A, m, d)
Algoritmos – p. 53