C# 字典<;TKey,TValue>;已排序和未排序。检索时间

C# 字典<;TKey,TValue>;已排序和未排序。检索时间,c#,dictionary,collections,C#,Dictionary,Collections,从MSDN: 排序的字典泛型类是二进制的 具有O(logn)检索的搜索树,其中n是元素数 在字典里 从MSDN: 使用键检索值非常快,接近O(1), 因为字典类是作为 哈希表 我的问题有两个: 什么是O(logn)和O(1);及 是什么使词典(未排序)非常快?它需要更多的内存吗 O(n)是用来表示弱上界的符号O(logn)表示一个操作需要大约logn个步骤才能完成(取决于输入的大小)O(1)表示访问时间由一个常数限定,而不是由输入的大小限定 Dictionary类具有摊销常量访问(但不一定保证,

从MSDN:

排序的字典
泛型类是二进制的 具有O(logn)检索的搜索树,其中n是元素数 在字典里

从MSDN:

使用键检索值非常快,接近O(1), 因为
字典
类是作为 哈希表

我的问题有两个:

  • 什么是
    O(logn)
    O(1)
    ;及
  • 是什么使
    词典
    (未排序)非常快?它需要更多的内存吗
  • O(n)
    是用来表示弱上界的符号
    O(logn)
    表示一个操作需要大约logn个步骤才能完成(取决于输入的大小)
    O(1)
    表示访问时间由一个常数限定,而不是由输入的大小限定

    Dictionary类具有摊销常量访问(但不一定保证,因为它可能需要调整大小),其中作为SortedDictionary类,由于它是从树构建的,所以保证访问时间为O(logn)

    这里有一个很好的哈希表介绍:

    O(n)
    是用来表示弱上界的符号
    O(logn)
    表示一个操作需要大约logn个步骤才能完成(取决于输入的大小)
    O(1)
    表示访问时间由一个常数限定,而不是由输入的大小限定

    Dictionary类具有摊销常量访问(但不一定保证,因为它可能需要调整大小),其中作为SortedDictionary类,由于它是从树构建的,所以保证访问时间为O(logn)

    这里有一个很好的哈希表介绍:

    O(1)
    时间性能是一个常数时
    O(logn)
    -对数依赖性描述的时间性能。当
    O(1)
    时,时间性能为常数
    O(logn)
    -对数依赖性描述的时间性能。