Função de complexidade de algoritmos, cujo tempo de execução...

Próximas questões
Com base no mesmo assunto
Q1393303 Algoritmos e Estrutura de Dados
Função de complexidade de algoritmos, cujo tempo de execução ocorre tipicamente em algoritmos que resolvem um problema quebrando-o em problemas menores, resolvendo cada um deles independentemente e, depois, ajuntando as soluções:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - f(n) = O(n log n)

Para compreender essa questão, é fundamental ter um bom entendimento sobre complexidade de algoritmos, especialmente em relação a diferentes classes de complexidade e como elas se aplicam a diversos tipos de algoritmos.

A questão aborda especificamente algoritmos que resolvem um problema dividindo-o em problemas menores, resolvendo cada um deles de maneira independente e, depois, combinando as soluções. Esse é um padrão típico de algoritmos de divisão e conquista.

Vamos analisar cada uma das alternativas:

A - f(n) = O(log n)

Esta alternativa refere-se a algoritmos cuja complexidade cresce de forma logarítmica, como a busca binária. No entanto, algoritmos de divisão e conquista, como o Merge Sort ou o Quick Sort, geralmente têm uma complexidade maior devido à necessidade de combinar soluções dos subproblemas.

B - f(n) = O(n)

Esta alternativa se refere a algoritmos com complexidade linear, onde o tempo de execução cresce proporcionalmente ao tamanho da entrada. Exemplos incluem a busca linear em um array. No entanto, isso não se aplica a algoritmos de divisão e conquista, que têm processos adicionais de combinação.

C - f(n) = O(n log n) (Correta)

Algoritmos como o Merge Sort e o Quick Sort possuem essa complexidade. Eles quebram o problema em subproblemas menores (com um custo logarítmico) e combinam as soluções (com um custo linear). Portanto, sua complexidade total é O(n log n).

D - f(n) = O(n²)

Esta alternativa se refere a algoritmos com complexidade quadrática, como o Bubble Sort e o Insertion Sort na pior das hipóteses. Esses algoritmos não seguem o paradigma de divisão e conquista.

Portanto, com base no enunciado e na explicação acima, a alternativa C é a correta, pois reflete adequadamente a complexidade de algoritmos que utilizam o método de divisão e conquista.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

c = São algoritmos de complexidade nLogn. Ocorre tipicamente em algoritmos que dividem problemas em problemas menores, porém juntando posteriormente a solução dos problemas menores.

Fonte: https://pt.wikipedia.org/wiki/Complexidade_log-linear

Adescrição é do merge sort, dividir para conquistar. tem complexidade N logN

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo