Heapsort
Até aqui vimos algoritmos de ordenação, que para superar usem o paradigma de divisão e conquista (mergesort e quicksort) e com isso rodam no caso médio em .k
Há, no entanto, um modo alternativo e muito criativo para um algoritmo superar : tirar proveito de uma estrutura de dados poderosa para com isso chegar à para o caso médio. O algoritmo que veremos a seguir roda em e faz isso localmente ( de eficiência no espaço).
Heap-max
Uma árvore quase completa onde cada nó pai é maior ou igual a suas filhas. Portanto, temos o maior valor acessível de forma imediata na raiz da árvore.
Árvore não pode ser cíclico, ou seja, todas as ramificações devem ter um nó terminal sem que seja ligado a um outro nó.
Exercício
- Criar 1 max-heap no pior caso.
- Ordenar usando o max-heap em para o pior caso.
- Localmente (sem utilizar uma estrutura externa, tudo no mesmo vetor).
- De modo não muito complicado.
Referências
- UDI Mamber
- Cormen