Ответ
O(n) в худшем случае, где n — количество элементов. Однако благодаря оптимизации Copy-on-Write (CoW) фактическое копирование происходит отложенно.
Как это работает:
- При присваивании (
let b = a) создается новая ссылка на те же данные — O(1). - Физическое копирование буфера памяти происходит только при попытке изменить один из массивов (мутация). Это и есть O(n), так как все элементы должны быть скопированы.
Пример:
var arrayA = [1, 2, 3] // Выделен буфер
var arrayB = arrayA // O(1). Оба массива ссылаются на один буфер.
arrayB.append(4) // O(n). Срабатывает CoW: для arrayB создается отдельная копия буфера, затем добавляется элемент.
Почему это важно: CoW оптимизирует производительность, избегая ненужных копий для массивов, которые только читаются.