Back to questions
Junior — Middle
76
Как оценивается временная сложность операции добавления элемента в конец массива типа Slice?
Answer from AI
sobes.tech AI
Добавление элемента в конец среза (slice) в Go обычно имеет амортизированную временную сложность O(1). Это связано с тем, что срезы имеют внутренний массив с определённой ёмкостью. Если при добавлении элемента ёмкость не превышена, операция просто добавляет элемент и занимает константное время.
Однако, когда ёмкость внутреннего массива исчерпывается, происходит выделение нового массива с увеличенной ёмкостью (обычно в 2 раза больше), копирование старых элементов в новый массив и добавление нового элемента. Эта операция занимает O(n) времени, где n — текущий размер среза.
Таким образом, в среднем (амортизированно) добавление элемента — O(1), но в худшем случае — O(n).