Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Complexidade de Algoritmos — FGV 2021

Algoritmos e Estrutura de DadosComplexidade de Algoritmos
Código
fg039322
Banca
FGV
Órgão
FUNSAÚDE - CE
Ano
2021
Nível
Superior
Cargo
Analista de Tecnologia da Informação - TI e Infraestrutura de Informática
Considere o pseudocódigo abaixo, que define uma função que recebe dois arrays, A1, A2, cada um com N elementos indexados a partir de 1, e retorna o número de elementos do array A1 que não aparecem em A2.function xpto(A1, A2, N)contagem=0for i=1 to Nflag=0for j=1 to Nif A1[i] == A2[j] then flag=1if flag == 0 then contagem=contagem + 1return contagemExatamente como foi codificado, o algoritmo da função xpto tem complexidade
  1. AO(1)
  2. BO(n)
  3. CO(2.n)
  4. DO(n²)
  5. EO(2.n²)
Revelar gabarito e comentário

GabaritoD — O(n²)

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”.

Complexidade do algoritmo: laços aninhados

Gabarito: letra D. O algoritmo possui dois laços for aninhados, cada um iterando N vezes, resultando em N×N=N2N \times N = N^2 operações elementares no pior caso. Portanto, a complexidade assintótica é O(N2)O(N^2), independentemente de constantes multiplicativas.

A função xpto percorre cada elemento de A1 (laço externo) e, para cada um, percorre todo o array A2 (laço interno) para verificar se o elemento aparece. Isso gera exatamente N×N=N2N \times N = N^2 comparações entre elementos. As operações de atribuição e incremento são desprezíveis na análise assintótica. Assim, a complexidade é quadrática.

  1. 1Laço externo: N iterações
  2. 2Laço interno: N iterações
  3. 3Total: N × N = N²
  4. 4Big-O: O(N²)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O(1)O(1) seria constante, o que não ocorre porque o tempo de execução cresce com o tamanho da entrada.

Alternativa B — ❌ Incorreta

O(n)O(n) seria linear, mas o algoritmo tem dois laços aninhados, não um único laço.

Alternativa C — ❌ Incorreta

O(2n)O(2n) ainda é linear (constante ignorada). O algoritmo é quadrático, não linear.

Alternativa D — ✅ Correta ⟵ GABARITO

O(n2)O(n^2) representa exatamente a complexidade dos dois laços aninhados, cada um iterando NN vezes.

Alternativa E — ❌ Incorreta

O(2n2)O(2n^2) é equivalente a O(n2)O(n^2), mas a notação Big-O desconsidera constantes multiplicativas. Embora tecnicamente correto como limite superior, a forma padrão e mais simples é O(n2)O(n^2). A banca considerou a notação simplificada; O(n2)O(n^2) é a resposta esperada.

PEGA ESSA DICA!

Em análise de complexidade, foque no termo dominante e ignore constantes. Laços aninhados sem interrupções indicam complexidade multiplicativa: externo NN, interno NN, total N2N^2.

Gabarito: letra DO(n2)O(n^2).

Link permanente: /questoes/fg039322