Ответ
Временная сложность зависит от позиции вставки:
- Вставка в конец (
append(_:)): O(1) в среднем (амортизированная). Swift использует динамический массив с запасом емкости (capacity). Если емкости достаточно, операция константна. При исчерпании емкости происходит переаллокация с копированием всех элементов (O(n)), но это случается редко, что дает амортизированную O(1). - Вставка в начало или середину (
insert(_:at:)): O(n), где n — количество элементов. Все элементы после точки вставки необходимо сдвинуть.
Пример:
var numbers = [1, 2, 3, 4]
numbers.append(5) // O(1) (амортизированная)
numbers.insert(0, at: 0) // O(n), сдвигает элементы [1,2,3,4,5]
Практический совет: Для частых вставок в произвольные позиции рассмотрите другие структуры данных, например, связный список (O(1) для вставки при известном узле).