c# 高级编程 10章225页 【集合】【性能】

143 阅读1分钟

性能

  • 集合的方法,常有性能提示,以O表示操作时间
    • O(1): 无论集合中有多少数据,这个操作需要的时间都不变
    • O(log n): 执行这个操作,需要的时间在最坏情况时是N
    • O(n): 操作需要的时间,随集合中元素的增加而增加,但每个元素增加的时间不是线性的,而是呈对数曲线。

集合类的性能

集合添加插入删除Item排序查找
List<T>若需重置大小,O(1)或O(n)O(n)O(n)O(1)O(n log n),最坏O(n^2)O(n)
Stack<T>若需重置大小,O(1)或O(n)n/aO(1)n/an/an/a
Queue<T>若需重置大小,O(1)或O(n)n/aO(1)n/an/an/a
HashSet<T>若需重置大小,O(1)或O(n)O(1)或O(n)O(1)n/an/an/a
SortedSet<T>若需重置大小,O(1)或O(n)O(1)或O(n)n/an/an/an/a
LinkedList<T>O(1)O(1)O(1)n/an/aO(n)
Dictionary<TKey, TValue>O(1)或O(n)n/aO(1)O(1)n/an/a
SortedDictionary<TKey, TValue>O(log n),因为树形结构n/aO(log n)O(log n)n/an/an/a
SortedList<TKey, TValue>无序数据O(n);若需重置大小,O(n);到列表尾部O(log n)n/aO(n)键在列表中O(log n),键不在列表中O(n)n/an/a