Sobes.tech
Junior — Middle

Koji je nivo vremenske složenosti operacije dodavanja elementa na kraj niza pomoću slice-a?

sobes.tech АИ

Одговор од АИ

U Go, operacija dodavanja elementa na kraj slice-a (append) ima amortizovanu vremensku složenost O(1).

Objašnjenje:

  • Ako slice ima dovoljno kapaciteta (capacity), dodavanje elementa se jednostavno vrši upisom u sledeći slobodni indeks — to je operacija u konstantnom vremenu.

  • Ako kapacitet nije dovoljan, dodeljuje se novi veći niz, stari elementi se kopiraju, i dodaje se novi — ta operacija traje O(n), gde je n trenutna veličina slice-a.

Međutim, pošto se takve redistribucije ne dešavaju pri svakom dodavanju, već samo periodično, prosečna (amortizovana) složenost dodavanja ostaje O(1).