Imagem de fundo

Considere o algoritmo abaixo, em Python, que busca o menor elemento de uma lista e remo...

Considere o algoritmo abaixo, em Python, que busca o menor elemento de uma lista e remove-o repetidamente, formando uma nova lista ordenada:


def ordenar(lista):

resultado = []

while lista:

menor = min(lista)

resultado.append(menor)

lista.remove(menor)

return resultado


Esse algoritmo, apesar de funcional, apresenta baixa eficiência. A complexidade de tempo resultante é:


A

O(n log n), equivalente ao Merge Sort.


B

O(n2), pois cada iteração executa operações lineares sobre a lista restante.


C

O(n3), em razão das operações encadeadas de busca e remoção.


D

O(n), já que cada elemento é visitado apenas uma vez.


E

O(log n), pois utiliza a função min() otimizada internamente.