Назад к вопросам
СБЕР
OZON
IT One
Aston
ОТП Банк
Junior — Middle
63
Как определяется временная сложность вставки элемента в середину массива ArrayList?
Компании, где спрашивали
СБЕР Бизнес
Тетрасофт
Ответ от нейросети
sobes.tech AI
Вставка элемента в середину массива ArrayList в Java имеет временную сложность O(n), где n — количество элементов в списке.
Причина в том, что ArrayList реализован на основе обычного массива. При вставке в середину необходимо:
- Освободить место для нового элемента, сдвинув все элементы, начиная с позиции вставки, на один индекс вправо.
- Записать новый элемент в освободившуюся позицию.
Сдвиг элементов — операция, требующая копирования примерно половины элементов массива (в среднем n/2), что даёт линейную сложность.
Пример:
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
list.add(2, 99); // вставляем 99 на позицию с индексом 2
// После вставки: [1, 2, 99, 3, 4, 5]
Если вставлять элемент в конец списка, сложность будет амортизированно O(1), так как сдвиг не требуется.