Назад к вопросам
Junior
84
questionbank

Какова алгорифмическая сложность добавления элементов в конец массива?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

O(1) амортизировано (amortized).

При добавлении элемента в конец массива, если есть свободное место, происходит простое присваивание, что занимает O(1).

Если массив заполнен, требуется перевыделение памяти и копирование всех существующих элементов в новое, большее хранилище. Эта операция занимает O(N), где N - количество элементов в массиве.

Благодаря стратегии удвоения размера при перевыделении, средняя стоимость добавления элемента за большое количество операций стремится к постоянной величине.

Пример на Swift:

var array = [Int]()

// Добавление, скорее всего O(1)
array.append(1)

// Может потребовать перевыделения памяти и стать O(N)
// Но амортизированная стоимость для всей последовательности append остаётся O(1)
array.append(2)