Buscar

Heap Sort: Ordenação Eficiente

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

HEAP SORT
Jefferson Henrique Barbosa Nascimento
Rodrigo do Nascimento Borges
(2020) UFPI - CCN - Dep. de Computação - Lab. de Programação (Prof. Antônio Helson).
Heap: Árvore binária quase completa;
- Vetor que emula uma organização em forma de árvore;
- Cada pai deve ser maior que seus filhos.
4 3 2 1 0
4
3 2
01
(Representação ilustrativa da organização de um vetor em forma de Heap).
- O método consiste de duas fases:
 -> Construir uma Heap de um vetor 
arbitrário ( n elementos );
-> Usar a Heap para ordenar os 
dados;
Para um elemento na posição [i] 
temos que:
PAI(i) = (i-1) / 2; (div. inteira)
FILHO_ESQUERDA(i) = 2*i+1;
FILHO_DIREITA(i) = 2*i+2.
(Relação entre os nós de um Heap).
- Primeira etapa: função cria_Heap:
8 5 6 4 7 9
0 1 2 3 4 5
- Dado n elementos;
- Colocar os números em uma árvore binária;
- Em seguida, repetir:
- Verificar se um dos filhos é maior que 
seu pai;
- Caso seja, realizar troca.(Função sendo implementada).
8 5 6 4 7 9
0 1 2 3 4 5
8
5 6
74 9
A função analisa uma 
subárvore de cada vez 
(pai com seus dois 
filhos). Faz a troca caso 
o maior dos filhos 
seja maior que seu 
pai.
8
5 6
74 9
8
7 6
54 9
8
7 9
54 6
TROCA TROCA
9
7 8
54 6
TROCA
HEAP!
Filho maior que 
o pai?? 
TROCA!
9
7 8
54 6
- Início e fim da árvore trocam de 
posição;
- Processo se repete, mas agora 
com um elemento a menos (Maior 
já está ordenado).
6 7 8 4 5 9
0 1 2 3 4 5
ORDENADO!
6
7 8
54
NOVO 
HEAP
...e por aí vai...
Novo vetor.
TROCA - Segunda etapa: (dentro da função HeapSort)

Outros materiais