GeraProva GeraProva Provas com IA para professores do Brasil
Computação1ª sérieBNCC EM13CO03Média⏱ curto

Em uma atividade de organização de dados, duas listas já estão ordenadas em ordem crescente. O algoritmo de…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EM13CO03

Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Em uma atividade de organização de dados, duas listas já estão ordenadas em ordem crescente. O algoritmo de merge compara os primeiros elementos ainda não utilizados de cada lista, transfere o menor para uma nova lista e repete esse procedimento até que uma das listas termine. Em seguida, os elementos restantes da outra lista são transferidos diretamente. Considere duas listas de tamanhos m e n, sem assumir que esses tamanhos sejam iguais. Com base no funcionamento descrito, qual é a complexidade temporal assintótica do algoritmo de merge, expressa em função de m e n, no pior caso?

  1. A) Θ(m + n), pois cada elemento das duas listas é processado no máximo uma vez.
  2. B) Θ(n), pois a lista resultante é formada a partir da segunda lista ordenada.
  3. C) Θ(m · n), pois cada elemento de uma lista é comparado com todos os da outra.
  4. D) Θ(m), pois basta percorrer integralmente a primeira lista ordenada.
  5. E) Θ(log(m + n)), pois o algoritmo reduz o problema a cada comparação.

✅ Resposta correta: alternativa A

Resolução passo a passo

  1. Entenda o procedimento descrito. Em cada iteração, o algoritmo compara os primeiros elementos ainda não usados das duas listas, transfere o menor para a lista resultante e avança apenas no ponteiro da lista de onde o elemento saiu.
  2. Conte quantas operações ocorrem. Cada iteração transfere exatamente um elemento para a nova lista e, portanto, cada elemento de cada lista é transferido no máximo uma vez. Como a lista resultante tem m + n elementos, há no máximo m + n iterações de comparação e transferência.
  3. Analise a cauda. Quando uma lista termina, os elementos restantes da outra são copiados diretamente, o que custa um tempo proporcional ao número de elementos restantes, sem novas comparações. Assim, o trabalho total continua limitado pela soma m + n.
  4. Conclua no pior caso. Como o número de operações cresce linearmente com m + n e também é necessário pelo menos percorrer todos os elementos para produzir a saída completa, a complexidade é Θ(m + n). A alternativa A está correta.
  5. Por que as outras estão erradas. B está errada porque ignora a primeira lista, cujos elementos também precisam ser processados. C está errada porque o merge não compara cada elemento com todos os da outra lista; ele avança de forma sequencial. D está errada porque percorrer apenas a primeira lista deixa de considerar a segunda, que também contribui para o trabalho. E está errada porque log(m + n) seria típico de busca binária, e o merge precisa tocar em cada elemento ao menos uma vez.

💡 Dica: Considere a definição de complexidade temporal do algoritmo.

Alternativa por alternativa

A Correta

A cada comparação, pelo menos um elemento é transferido para a lista resultante. Assim, os elementos das duas listas são percorridos uma única vez, incluindo os elementos restantes após o término de uma delas. O número total de operações é proporcional a m + n, portanto a complexidade temporal no pior caso é Θ(m + n).

B Erradaerro: Conceituala que mais engana

Acredita que o custo depende apenas de uma das listas, como se a lista resultante fosse copiada inteira da segunda sem considerar a primeira.

Por que engana: Confundir a complexidade do algoritmo de merge com a de outros algoritmos, como o de multiplicação de matrizes, levando a uma resposta incorreta.

C Erradaerro: Conceitual

Imagina que o merge compara todos os pares de elementos entre as duas listas, como em um produto cartesiano, confundindo com algoritmos de comparação par a par.

D Erradaerro: Interpretação

Supõe que, como a primeira lista é percorrida, a segunda é ignorada, esquecendo que os elementos de ambas precisam ser transferidos para a saída.

E Erradaerro: Conceitual

Associa o procedimento a estratégias de divisão pela metade, como busca binária ou divisão e conquista logarítmica, sem perceber que o merge processa todos os elementos.

Raio-X da questão

Dificuldade Média
Bloom Aplicar
Leitura medio
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade unica
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ direta🧩 consolidacao
🎯 Conceito central

complexidade temporal

📌 Objetivo

avaliacao

🧱 Pré-requisitos

análise de algoritmos · notação Big O

📚 Reveja

Revisar algoritmos de ordenação e suas complexidades.

⚠️ Erro mais comum

Confundir a complexidade do algoritmo de merge com a de outros algoritmos, como o de multiplicação de matrizes, levando a uma resposta incorreta.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.