На этой странице обобщены некоторые временные сложности для различных типов коллекций с Java, хотя они должны быть точно такими же для .NET.
Я взял таблицы с этой страницы и изменил / расширил их для .NET Framework.
См. Также страницы MSDN для SortedDictionary и SortedList , которые подробно описывают временные сложности, необходимые для различных операций.
Поиск
<b>Type of Search/Collection Types Complexity Comments</b>
Linear search Array/ArrayList/LinkedList O(N) Unsorted data.
Binary search sorted Array/ArrayList/ O(log N) Requires sorted data.
Search Hashtable/Dictionary<T> O(1) Uses hash function.
Binary search SortedDictionary/SortedKey O(log N) Sorting is automated.
Поиск и вставка
<b>Operation Array/ArrayList LinkedList SortedDictionary SortedList</b>
Access back O(1) O(1) O(log N) O(log N)
Access front O(1) O(1) N.A. N.A.
Access middle O(1) O(N) N.A. N.A.
Insert at back O(1) O(1) O(log N) O(N)
Insert at front O(N) O(1) N.A. N.A.
Insert in middle O(N) O(1) N.A. N.A.
Удаление должно иметь ту же сложность, что и вставка для связанной коллекции.
SortedList имеет несколько примечательных особенностей для вставки и извлечения.
Вставка (Добавить метод):
Этот метод является операцией O (n) для
несортированные данные, где n - граф. это
O (log n) операция, если новый
элемент добавляется в конце
список. Если вставка вызывает изменение размера,
операция O (n).
Получение (свойство объекта):
Получение значения этого свойства
является операцией O (log n), где n
Граф. Установка свойства является
O (log n) операция, если ключ
уже в SortedList <(Of <(TKey,
TValue>)>). Если ключ не находится в
список, устанавливающий свойство O (n)
операция для несортированных данных, или O (журнал
n) если новый элемент добавлен в
конец списка. Если вставка вызывает
изменить размер, операция O (n).
Обратите внимание, что ArrayList
эквивалентно List<T>
с точки зрения сложности всех операций.