字典<tkey,tvalue =“”>已排序且未排序。撤退时间

时间:2016-06-02 20:35:44

标签: c# dictionary collections

来自MSDN:

  

SortedDictionary<TKey,TValue>泛型类是二进制   搜索树与O(log n)检索,其中n是元素的数量   在字典中

来自MSDN:

  

使用密钥检索值非常快,接近O(1),   因为Dictionary<TKey,TValue>类是作为一个实现的   哈希表。

我的问题有两个:

  1. 什么是O(log n)O(1);和
  2. 是什么让Dictionary(未排序)非常快?它需要更多的内存吗?

1 个答案:

答案 0 :(得分:2)

O(n)是用于表示弱上限的符号。 O(log n)表示操作需要大约log n步骤才能完成(这取决于输入的大小)。 O(1)表示访问时间受常量限制,而不是输入的大小。

Dictionary类具有分摊的常量访问权限(但不一定能保证,因为它可能需要调整大小),因为SortedDictionary将保证访问时间为O(log n),因为它是从树构建的。

以下是哈希表的一个很好的介绍:hash tables