Sobes.tech
Junior — Middle

Comment connaître le coût temporel lors de l'ajout d'un élément à la fin du tableau?

sobes.tech IA

Réponse de l'IA

Добавление элемента в конец массива обычно имеет амортизированную временную сложность O(1). Это связано с тем, что если в массиве достаточно выделенной памяти, элемент просто добавляется в следующую свободную ячейку.

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

В Swift, например, массивы реализованы с динамическим выделением памяти, и добавление через метод append обычно быстрое, но иногда может вызвать перераспределение памяти:

var array = [1, 2, 3]
array.append(4) // Быстрая операция, если есть место

Таким образом, чтобы узнать временные затраты, можно ориентироваться на амортизированную оценку O(1), но учитывать редкие операции копирования.