Sobes.tech
Junior — Middle

Qual é a complexidade temporal da operação de adicionar um elemento ao final de um array do tipo ArrayList?

sobes.tech IA

Resposta da IA

A complexidade temporal de adicionar um elemento ao final de um array do tipo ArrayList em média é O(1) — tempo amortizado constante.

Isto acontece porque o ArrayList armazena os elementos num array de tamanho fixo. Quando adicionamos um elemento, se houver espaço livre no array, o elemento é simplesmente colocado na próxima posição.

No entanto, se o array estiver cheio, ocorre uma operação de expansão — é criado um novo array de maior tamanho, e todos os elementos são copiados para ele. Esta operação leva O(n) tempo, onde n é o número de elementos.

Exemplo:

ArrayList<Integer> list = new ArrayList<>();
list.add(1); // O(1)
list.add(2); // O(1)
// Quando a capacidade do array é atingida, ocorre uma expansão — O(n)

Assim, a complexidade média de adição é — O(1), mas no pior caso — O(n).