散列表(Hash Table)

散列表其实就是数组+hash函数构成。
所以它就具有了数组和hash函数的所有优点。
数组,支持按索引随机访问数组中的任意数据;
hash函数,可以将任意类型的数据映射成为一个整数(数组下标)。
所以当我们存储数据的时候,将数据存储到按hash函数计算出来的索引下面,查询的时候通过hash函数就可以找到数据所在位置的下标,就可以在O(1)时间内取到数据。

image.png

这里肯能遇到的问题是,两个key可能映射到了同一个下标值,我们把这种现象称为hash冲突。显然不能直接覆盖,否则之前存的数据就没有了。常用的解决方法有两个:

  • 开放寻址法
    如果hash函数计算出来的下标索引下面已经有数据了,就找该下标之后第一个没有数据的位置存放数据。
  • 链表法
    在每个元素中存储一个链表,将相同hash 值的所有元素都存储在这个链表上面


    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 关键字 2. 映射2.1. 散列函数(hash)2.1.1. 简单一致散列2.1.2. 碰撞(collisi...
    mbinary阅读 1,023评论 1 3
  • 散列表(Hash table)——将条目的关键码视作其在映射结构中的存放位置 散列表由两个要素构成:桶数组与散列函...
    峰峰小阅读 2,290评论 0 3
  • 定义 散列表是一种以平均O(1)时间插入、删除和查找的数据结构,可是类似于findMax,findMin等操作则需...
    None_Ling阅读 489评论 0 0
  • 黄渤自导自演,我不是专业,但是以他的聪明才智和经历过的大风大浪,拍出此篇还是有点让人失望的。不过也不能用看管虎和宁...
    寅颖阅读 137评论 0 0
  • 丹丹,你好吗?今天感觉如何? 今天感觉不开心,今天总是着急和生气,而且预感幸好及时在对父母快产生情...
    杨丹_cbc4阅读 157评论 0 0