Computação Múltipla Escolha

Determine a complexidade do algoritmo abaixo: Função teste ( n ); A=1; B=1000; Enquanto B > A faça para i=1 até n faça A = A * log2(i); escreva( A ); fim_para; fim_enquanto; fim.

Determine a complexidade do algoritmo abaixo:

Função teste ( n );
A=1;
B=1000;
Enquanto B > A faça
para i=1 até n faça
A = A * log2(i);
escreva( A );
fim_para;
fim_enquanto;

fim.

  1. O(1)
  2. O(n)
  3. O(logn)
  4. O(nlogn)
  5. O(lognlogn)

Resolução completa

Explicação passo a passo

D
Alternativa D

Análise da Complexidade do Algoritmo

Vamos analisar passo a passo o algoritmo apresentado:

Estrutura do Código

ElementoDescrição
Variável AComeça com valor 1
Variável BValor fixo de 1000
Laço WhileExecuta enquanto B > A
Laço ForExecuta de 1 até n
Operação internaMultiplica A por log₂(i)

Comportamento das Variáveis

  1. Inicialização: A = 1, B = 1000
  2. Condição do While: B > A significa que o laço continua enquanto A < 1000
  3. Crescimento de A: Em cada iteração do for, A é multiplicado por log₂(i)
  • Isso faz com que A cresça exponencialmente (multiplicativamente)
  • Para atingir o valor 1000, são necessárias poucas iterações externas
  1. Número de Iterações Externas: Como A cresce exponencialmente, o número de vezes que o while executa é O(log n)
  2. Número de Iterações Internas: O for sempre executa exatamente n vezes

Cálculo da Complexidade Total

\text{Complexidade} = \text{Itéraçoes externas} \times \text{Itéraçoes internas}
\text{Complexidade} = O(\log n) \times O(n) = O(n \log n)

Consideração Importante

Nota: Existe um detalhe técnico no código original onde log₂(1) = 0, o que tornaria A = 0 na primeira iteração e criaria um loop infinito. No entanto, em questões de concursos, geralmente considera-se o caso teórico válido para análise de complexidade.

Resumo

Alternativa D

O algoritmo tem complexidade O(n log n) porque:

  • O laço interno (for) executa n vezes em cada passagem
  • O laço externo (while) executa O(log n) vezes devido ao crescimento exponencial de A
  • Multiplicando ambos: O(n) × O(log n) = O(n log n)

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Computação

Ver mais Computação resolvidas

Tem outra questão de Computação?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.