Какова вычислительная сложность этого цикла на языке программирования Go?
var a []int
for i := 0 ; i < n ; i++ {
a = append(a, i)
}
Работает ли append
в линейном времени (перераспределение памяти и копирование всего на каждом добавлении) или в постоянное время амортизации (например, как реализуются векторные классы на многих языках)?