Aula 13: Heaps e top-K
Imagine um pronto-socorro: os pacientes não são atendidos pela ordem de chegada, mas pela urgência. A estrutura que faz exatamente isso é a 'heap' — uma fila de prioridades que sempre dá acesso rápido ao item extremo (o menor ou o maior). Em Python: heapq, com inserção/remoção em O(log n). É a ferra
Uma heap é como uma fila de hospital que sempre puxa o próximo paciente mais urgente. No heapq do Python, 'mais urgente' é simplesmente o menor número.
- heap
- Uma estrutura de dados (fila de prioridades) que permite push e pop em O(log n), e peek do elemento extremo (mín/máx) em O(1).
- min-heap
- Uma heap em que o menor elemento está sempre na raiz; o heapq do Python é uma min-heap, e heappop retorna o mínimo.
- top-K
- Encontrar os K maiores (ou menores) elementos. Isso pode ser feito em O(n log K) com uma heap de tamanho K, mais rápido que uma ordenação completa.