Sobes.tech
Junior — Middle

Jaká je úroveň časové složitosti operace přidání prvku na konec pole pomocí slice?

sobes.tech AI

Odpověď od AI

V jazyce Go má operace přidání prvku na konec slice (append) amortizovanou časovou složitost O(1).

Vysvětlení:

  • Pokud má slice dostatečnou kapacitu (capacity), přidání prvku je jednoduché zápisem na následující volný index — jedná se o operaci v konstantním čase.

  • Pokud kapacita nestačí, alokuje se nový větší pole, staré prvky se zkopírují a přidá se nový prvek — tato operace trvá O(n), kde n je aktuální velikost slice.

Nicméně, protože takové přerozdělení nedochází při každém přidání, ale pouze periodicky, průměrná (amortizovaná) složitost přidání zůstává O(1).