Разбор сложности операций с коллекциями важен для написания эффективного кода. В C# структуры данных List<T> и Dictionary<TKey, TValue> широко используются для хранения и обработки данных. Разберём их сложность при вставке элементов.
Сложность вставки в List
List<T> — это динамический массив, позволяющий изменять размер коллекции. Вставка элемента может происходить в конец списка или в определённую позицию.
Добавление в конец списка
Операция Add() добавляет элемент в конец списка.
List<int> list = new List<int>();
list.Add(10);
list.Add(20);Сложность O(1) в среднем случае, так как добавление происходит в конец массива.
Вставка в середину или начало списка
Операция Insert(index, item) вставляет элемент в указанную позицию.
list.Insert(1, 15); // Вставка в серединуСложность O(N), так как все последующие элементы сдвигаются вправо.
Сложность вставки в Dictionary<TKey, TValue>
Dictionary<TKey, TValue> реализован как хеш-таблица. Вставка элемента выполняется по ключу.
Dictionary<string, int> dict = new Dictionary<string, int>();
dict["apple"] = 1;
dict["banana"] = 2;Добавление элемента
Операция Add(key, value) вставляет пару ключ-значение.
dict.Add("cherry", 3);В среднем случае сложность O(1), так как элемент размещается по хешу. Однако при большом количестве коллизий возможна деградация до O(N).