Sobes.tech
Junior — Middle

Jaká je časová složitost operace přidání prvku na konec pole typu ArrayList?

sobes.tech AI

Odpověď od AI

Časová složitost přidání prvku na konec pole typu ArrayList je v průměru O(1) — amortizovaná konstantní doba.

K tomu dochází, protože ArrayList ukládá prvky v pevně velikém poli. Když přidáváme prvek a v poli je volné místo, prvek se jednoduše vloží do další buňky.

Pokud je však pole plné, provádí se operace rozšíření — vytvoří se nové větší pole a všechny prvky se do něj zkopírují. Tato operace zabere O(n) času, kde n je počet prvků.

Příklad:

ArrayList<Integer> list = new ArrayList<>();
list.add(1); // O(1)
list.add(2); // O(1)
// Při dosažení kapacity pole dojde k rozšíření — O(n)

Celkově je průměrná složitost přidání — O(1), ale v nejhorším případě — O(n).