Sobes.tech
Junior — Middle

Ako určiť čas potrebný na vloženie prvku na koniec rezu (slice) v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V jazyku Go je rez (slice) štruktúra, ktorá obsahuje ukazovateľ na pole, dĺžku a kapacitu.

Vkladanie prvku na koniec poľa sa zvyčajne vykonáva pomocou operácie append:

slice = append(slice, newElement)

Doba vloženia závisí od toho, či je aktuálna kapacita poľa dostatočná pre nový prvok:

  • Ak je kapacita dostatočná, append jednoducho zapíše prvok do ďalšieho voľného miesta — operácia O(1).
  • Ak kapacita nestačí, alokuje sa nové pole s väčšou kapacitou, staré prvky sa skopírujú a pridá sa nový — operácia O(n), kde n je aktuálna dĺžka poľa.

Tým je priemerná doba vloženia na koniec poľa O(1), aj keď niektoré operácie môžu byť drahšie kvôli redistribúcii pamäti.