Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: array, insertion, performance

Какая скорость вставки в массив? Зависит от чего?

Этот вопрос проверяет понимание производительности операций вставки в массив и факторов, которые на это влияют.

Короткий ответ

Вставка в конец массива обычно быстрая (O(1)), если есть достаточная capacity. Вставка в начало или середину медленная (O(n)), так как requires сдвиг всех последующих элементов. Скорость зависит от capacity, размера массива и места вставки.

Длинный ответ

Массивы в Swift являются contiguously allocated structures, что affects performance при вставке.

1. Скорость вставки:

  • В конец: O(1) amortized, так как массив periodically увеличивает capacity, копируя элементы в новый блок памяти.

  • В начало или середину: O(n), так как requires сдвиг всех элементов после точки вставки.

2. От чего зависит:

  • Capacity: Если массив has enough capacity, вставка в конец быстрая. Если нет, происходит reallocation и копирование.

  • Размер массива: Чем больше массив, тем медленнее вставка в начало/середину.

  • Место вставки: Вставка ближе к началу slower.

Пример:

var array = [1, 2, 3]
array.append(4) // Быстро, O(1)
array.insert(0, at: 0) // Медленно, O(n)

Оптимизация:

  • Используйте reserveCapacity(_:) если известно количество элементов.

  • Для частых вставок в начало consider использовать LinkedList (но в Swift его нет, можно использовать Deque из сторонних библиотек).

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • IOS

    IOS

Ключевые слова

#array

#insertion

#performance

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.