asp.net:在字典常量时间或log2(n)中按键搜索值的时间复杂度?

时间:2009-05-21 05:22:36

标签: asp.net search data-structures dictionary time-complexity

我需要dotnet中的数据结构,我可以在常量时间内搜索项目。这意味着数据结构应该在内部实现索引。这个字典是用于此目的还是其他一些?

1 个答案:

答案 0 :(得分:2)

是的,请使用词典<> (如果您使用的是旧版本的.NET,则为Hashtable)。确保填充在字典中的对象具有良好的哈希值(查看覆盖您在“词典”中用作键的对象的GetHashCode()和Equals())。如果您的数据对象具有较差的哈希码,性能将开始降低。是的,为了回答你的问题,哈希表/字典中的查找应该是相对恒定的时间(书籍通常说它是O(1),但这是有争议的)。查找性能将由许多因素决定:

  1. 哈希函数(确定分布)
  2. 表格如何处理碰撞?探测?桶? (大多数实现使用存储桶)。
  3. 桌子可调整大小吗?它是如何调整大小的?小增量? 2的力量?素数?
  4. 等...