asp.net:在字典中按键搜索值的时间复杂度是常数时间还是log2(n)?
我需要 dotnet 中的一个数据结构,我可以在恒定时间内搜索一个项目。这意味着数据结构应该在内部实现索引。字典对于此目的或其他目的有用吗?
i need a datastructure in dotnet where i can search an item in constant time.it means that datastructure should implement indexing internally.is dictionary usefull for this purpose or some other one?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,使用字典<> (如果您使用的是旧版本的 .NET,则为 Hashtable)。 确保您填充到字典中的对象具有良好的哈希值(针对您在字典中用作键的对象,研究覆盖 GetHashCode() 和 Equals())。 如果您的数据对象的哈希码性能较差,性能就会开始下降。 是的,为了回答你的问题,在哈希表/字典中查找应该是相对恒定的时间(书籍通常说它是 O(1),但这是有争议的)。 查找性能将由许多因素决定:
Yes, use Dictionary<> (or Hashtable if you are on an older version of .NET). Be sure the objects you are stuffing in the dictionary have a good hash value (look into overriding GetHashCode() and Equals() for your objects you are using as keys in the Dictionary). If your data objects have poor hash codes performance will start to degrade. And yes, to answer your question, looks ups in a hashtable/dictionary should be relatively constant time (books generally say it is O(1), but that's arguable). The lookup performance will be determined by many factors: