Please enable JavaScript.
Coggle requires JavaScript to display documents.
Heaps and Heapsort, Heapsort, Eficiência de inserção - Coggle Diagram
Heaps and Heapsort
Heap
estrutura de dados parcialmente ordenada, especialmente adequada para implementar filas prioritárias.
Fila de prioridade
Operações
- encontrar um item com a prioridade mais alta (ou seja, maior)
- excluir um item com a prioridade mais alta
- adicionar um novo item ao multiset
O heap também é a estrutura de dados que serve como base de um algoritmo de classificação chamado heapsort.
Um heap pode ser definido como uma árvore binária com chaves atribuídas aos seus nós, uma chave por nó, desde que as duas condições a seguir sejam atendidas:
a árvore binária está essencialmente completa, ou seja, todos os seus níveis estão cheios, exceto possivelmente o último nível, onde apenas algumas folhas mais à direita podem estar faltando.
- The parental dominance or heap property
-
Valores-chave
-
uma sequência de valores em qualquer caminho da raiz até uma folha é decrescente (não crescente, se chaves iguais forem permitidas).
não há relacionamento entre os valores-chave dos nós no mesmo nível da árvore ou, mais geralmente, nas subárvores esquerda e direita do mesmo nó.
Propriedades
-
-
-
4.
Um heap pode ser implementado como um array registrando seus elementos de cima para baixo, da esquerda para a direita.
b.
os filhos de uma chave na posição parental do array i (1 ≤ i ≤ n/2 ) estarão nas posições 2i e 2i + 1 e, correspondentemente, o pai de uma chave na posição i (2 ≤ i ≤ n ) estará na posição i/2
a.
as chaves do nó parental estarão nas primeiras [n/2] posições do array, enquanto as chaves folha ocuparão as últimas [n/2] posições
-
-
Heapsort
Eficiência
-
-
-
-
o heapsort é executado mais lentamente que o quicksort, mas pode ser competitivo com o mergesort.
Resultado da aplicação
-
Mas como na implementação de array de heaps um elemento que está sendo excluído é colocado por último
-
um algoritmo de classificação interessante descoberto por J. W. J. Williams [Wil64]. Este é um algoritmo de dois estágios que funciona da seguinte maneira.
-
-
-
-
-