Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — IBADE 2025
Algoritmos e Estrutura de Dados›Estrutura de Dados
Código
qg510937
Banca
IBADE
Órgão
Prefeitura de Rolim de Moura - RO
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas
Qual estrutura de dados é mais eficiente para implementar uma fila de prioridades, onde o elemento de maior prioridade é removido primeiro?
ALista encadeada simples.
BPilha.
CFila circular.
DHeap binário.
EMatriz bidimensional.
Revelar gabarito e comentário▾
GabaritoD — Heap binário.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Fila de prioridades e heap binário
Gabarito: letra D. Heap binário é a estrutura de dados mais eficiente para implementar uma fila de prioridades, pois permite inserir e remover o elemento de maior prioridade em tempo O(log n), enquanto estruturas lineares como listas encadeadas, pilhas e filas circulares exigem O(n) ou não atendem ao requisito de prioridade.
A fila de prioridades é um tipo abstrato de dados onde cada elemento possui uma prioridade, e a operação de remoção sempre retorna o elemento de maior prioridade. Para ser eficiente, é necessário um suporte que mantenha a ordenação implícita ou explícita com baixo custo.
A tabela a seguir compara as alternativas quanto à complexidade das operações principais:
Estrutura
Inserção
Remoção do máximo
Observação
Lista encadeada simples
O(1) no início/fim
O(n) para encontrar o maior
Sem ordenação por prioridade
Pilha
O(1) (push)
O(1) (pop) – mas remove o último inserido
Não considera prioridade
Fila circular
O(1) (enqueue)
O(1) (dequeue) – mas remove o primeiro inserido
Não considera prioridade
Heap binário
O(log n)
O(log n)
Mantém a propriedade de heap; ideal para fila de prioridades
Matriz bidimensional
O(1) (se índice conhecido)
Ineficiente – seria necessário percorrer toda a matriz
Não projetada para prioridade
Alternativa A — ❌ Incorreta
A lista encadeada simples não possui acesso direto ao elemento de maior prioridade. Para removê-lo, seria necessário percorrer toda a lista (O(n)) para localizá-lo, o que é ineficiente comparado à heap. Inserções podem ser O(1), mas a remoção do máximo é cara.
Alternativa B — ❌ Incorreta
A pilha opera com a política LIFO (Last In, First Out), ou seja, remove sempre o elemento mais recentemente inserido, independentemente de prioridade. Não atende ao requisito de remover o de maior prioridade.
Alternativa C — ❌ Incorreta
A fila circular segue a política FIFO (First In, First Out), removendo o elemento que está na fila há mais tempo. Não há qualquer noção de prioridade. Portanto, não serve para uma fila de prioridades.
Alternativa D — ✅ Correta ⟵ GABARITO
O heap binário é uma árvore binária (quase completa) que satisfaz a propriedade de heap: em um max-heap, cada nó pai é maior ou igual a seus filhos. Isso garante que o maior elemento esteja sempre na raiz. Tanto a inserção quanto a remoção do máximo têm complexidade O(log n), sendo a estrutura clássica e mais eficiente para filas de prioridades.
Alternativa E — ❌ Incorreta
Matriz bidimensional é uma estrutura tabular usada para representar dados em linhas e colunas. Não oferece suporte natural a operações de fila com prioridade; seria necessário percorrer todos os elementos para encontrar o maior, resultando em O(n*m).
PEGA ESSA DICA!
Lembre-se de que fila de prioridades não é uma fila comum (FIFO). A implementação clássica é o heap binário, que você pode visualizar como uma árvore. Na prova, distinga fila de prioridades de fila comum – a banca pode tentar confundir com opções como 'fila circular'.