Разбор сложности операций с коллекциями важен для написания эффективного кода. В 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)
.