哈希表

哈希表允许您实现关联数组(字典)数据结构,插入、删除和搜索操作的平均性能为 O(1)。

下面是 NodeJS 中哈希映射的最简单实现的示例:

它是如何工作的?小心你的手:

  • 哈希映射内部有一个数组
  • 数组元素内部有一个指向链表第一个节点的指针
  • 内存分配给指针数组(例如,65535 个元素)
  • 它们实现了一个哈希函数,字典键是输入,在输出它可以做任何事情,但最终它返回数组元素的索引

录音的工作原理:

  • 入口处有一对钥匙–值
  • 哈希函数按键返回索引
  • 通过索引从数组中获取链表节点
  • 检查是否与key匹配
  • 如果匹配,则替换该值
  • 如果不匹配,则转到下一个节点,直到找到或找到具有所需键的节点。
  • 如果仍未找到该节点,则在链表末尾创建该节点

按键搜索的工作原理:

  • 入口处有一对钥匙–值
  • 哈希函数按键返回索引
  • 通过索引从数组中获取链表节点
  • 检查是否与key匹配
  • 如果匹配,则返回值
  • 如果不匹配,则转到下一个节点,直到找到或找到具有所需键的节点。

为什么我们在数组中需要一个链表?由于计算哈希函数时可能发生冲突。在这种情况下,多个不同的键值对将位于数组中的同一索引处,此时将遍历链表来查找所需的键。

来源

https://ru.wikipedia.org/wiki/哈希表
https://www.youtube.com/watch?v=wg8hZxMRwcw

源代码

https://gitlab.com/demensdeum/datastructs

Leave a Comment

Your email address will not be published. Required fields are marked *