哈希表

作者: 大宝的爱情 | 来源:发表于2021-07-21 14:59 被阅读0次

哈希=散列
哈希法=散列法,对应的哈希表=散列表
什么是哈希法?
哈希法思想:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的。
哈希表冲突
当关键字集合很大时,关键字值不同的元素可能会映象到哈希表的同一地址上,即 k1≠k2 ,但 H(k1)=H(k2),这种现象称为冲突,此时称k1和k2为同义词。实际中,冲突是不可避免的,只能通过改进哈希函数的性能来减少冲突。

综上所述,哈希法主要包括以下两方面的内容:
1)如何构造哈希函数
2)如何处理冲突。

构造哈希函数较少冲突方法:
1,数字分析法
2,平方取中法
3,分段叠加法
4,除留余数法
5,伪随机数法

冲突解决:
1,开放定址法
①线性探针再散列
②二次探针再散列
③伪随机探针再散列
2,再哈希法
3,链地址法
4,建立公共溢出区

问题1:哈希表是如何实现的?

官话:元素关键字key和元素存储位置locaiton之间存在一种对应关系,location = f(key), f叫做哈希函数,根据函数关系创建哈希表,将关键字为key的元素直接存入f(key)的单元;以后查找关键字为key的元素时,利用哈希函数计算出该元素的存储位置location=f(key),实现按关键字key存取元素的目的。

问题2:如何解决地址冲突?

1,开放定址法(再散列法):
其基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi ,将相应元素存入其中。
有三种:
1,线性探针再散列,2,平方探针再散列,3,伪随机探针再散列

2,再哈希法:
这种方法是同时构造多个不同的哈希函数(函数前加个斜率值,即y=kx,改为y = krx,r = 1,2,3,4,5.。。。)

3,这种方法的基本思想是将所有哈希地址为x的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第x个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。
(说白了就是指针数组后边跟着一个单链表,为每个 Hash 值建立一个单链表,当发生冲突时,将记录插入到链表中。)

4.建立公共溢出区:
这种方法的基本思想是:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表

参考:
1
2

相关文章

  • Java数据结构_哈希表_基本概念

    本文目标 哈希表的基本概念,哈希冲突,哈希函数 什么是哈希表 哈希表也叫做散列表(hash有剁碎的意思)哈希表是空...

  • redis数据结构--字典

    Redis的字典底层就是哈希表。 哈希表 首先给出哈希表的定义: 其中可以看到,table是一个哈希表节点的数组,...

  • 哈希表和链表

    优秀文章:Chapter: 散列表(哈希表) 一、哈希表 哈希表hashtable(key,value) 就是把K...

  • 算法-哈希表算法总结

    1 哈希表模拟 思路:通过设计哈希表,模拟O(1)时间复杂度的哈希表。 2 数组作为哈希表 思路:数组就是简单的哈...

  • 数据结构 -- 哈希表及其应用

    这篇主要用来记录一下学习到的关于哈希表的知识点。 文章结构 哈希表 哈希表的定义 哈希表的优缺点 哈希碰撞 负载因...

  • 数据结构与算法(第一季):哈希表(Hash Table)

    一、哈希表(Hash Table) 1、概念 哈希表也叫做散列表。 哈希表的原理: 利用哈希函数生成key对应的i...

  • 深入理解哈希表

    深入理解哈希表 深入理解哈希表

  • 2019 算法面试相关(leetcode)--哈希表

    哈希表相关的原理可以参考下:浅谈哈希表(HashTable)深入理解哈希表哈希表的理解理解HashSet及使用 哈...

  • Redis中的字典

    Redis中的字典 Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保...

  • Redis数据结构与对象——哈希

    1 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表可以有多个哈希表节点,即每个哈希表节点就保存了字...

网友评论

      本文标题:哈希表

      本文链接:https://www.haomeiwen.com/subject/swdjmltx.html