我一直在尝试为各种类型的哈希数据结构找到一些具体的(非专业;非超学术)定义,特别是哈希表,哈希列表和哈希映射。在线搜索为所有这些提供了许多有用的链接,但从未明确说明何时适合使用其他链接。
(1)从实际的角度来看,这三者之间有什么区别?
(2)他们的运营运行时间有何不同?是否应该使用或避免使用其他类型的哈希值?
(3)每个如何与地图ADT有关?它们只是不同的实现,还是完全不同的野兽?
感谢您的任何见解!
答案 0 :(得分:2)
有一个抽象的数据结构,包含键和值之间的映射。它有几个不同的名称,包括 Map
,Dictionary
, Table
,Association Table
等等。
此数据结构应支持的最基本操作是在给定其关联键的情况下添加,删除和检索值。围绕这个基本概念有各种变化和补充 - 例如,一些结构支持迭代所有键值对,一些结构支持每个键的多个值,等等。各种实现之间的时间和空间复杂性也存在差异。 / p>
在可用于此数据结构的多个实现中,一些最常用的实现使用hash functions来实现快速访问。这些实现有时通过名称Hash Table
或Hash Map
调用,您可以read more about them in Wikipedia。哈希表实现之间的性能也有所不同,其中一些实现了分摊的O(1)插入和访问复杂性(对于大量使用的空间的价格)。