Sobes.tech
Junior — Middle

Jak określić czas potrzebny na dodanie elementu na koniec wycinka (slice) w języku programowania?

sobes.tech AI

Odpowiedź od AI

W języku Go, zakres (slice) to struktura zawierająca wskaźnik na tablicę, długość i pojemność.

Wstawianie elementu na koniec zakresu zwykle odbywa się za pomocą operacji append:

slice = append(slice, newElement)

Czas wstawiania zależy od tego, czy obecna pojemność zakresu jest wystarczająca dla nowego elementu:

  • Jeśli pojemność jest wystarczająca, append po prostu zapisuje element w następnej wolnej pozycji — operacja O(1).
  • Jeśli pojemność nie jest wystarczająca, alokowany jest nowy array z powiększoną pojemnością, stare elementy są kopiowane, a nowy jest dodawany — operacja O(n), gdzie n to obecna długość zakresu.

W związku z tym, amortyzowany czas wstawiania na koniec zakresu to O(1), choć niektóre operacje mogą być droższe z powodu redystrybucji pamięci.