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).