devterview_$ iniciar simulação

Complexidade de espaço e o que conta como 'in-place'

MédioPlenoComplexidade

Pergunta

Qual a diferença entre complexidade de tempo e de espaço, e o que significa um algoritmo ser 'in-place'?

Resposta esperada

Complexidade de espaço mede a memória extra que o algoritmo aloca além da entrada, em função do tamanho da entrada. 'In-place' significa O(1) de espaço extra — o algoritmo rearranja os dados no próprio array de entrada, sem criar uma estrutura proporcional a n. Exemplos: inverter um array trocando elementos das pontas é in-place; criar um novo array invertido é O(n) de espaço. Cuidado: recursão que parece não alocar nada ainda usa O(profundidade) de espaço na call stack — quicksort 'in-place' é O(log n) de espaço por causa da pilha, não O(1).

Por que perguntam isso

A pegadinha é a call stack: muita gente diz 'O(1) de espaço' num quicksort recursivo esquecendo a profundidade da recursão. Boa pergunta pra calibrar rigor.

#complexidade-espaco#in-place
publicidade

Relacionadas