C++数据结构之哈希表

哈希表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方。键可以对应多个值(即哈希冲突),值根据相应的hash公式存入对应的键中。

 哈希函数的构造要求:

  1. 运算过程要尽量简单高效,以提高哈希表的插入和检索效率;
  2. 哈希函数应该具有较好的散列型,以降低哈希冲突的概率,即尽量使关键字对应的记录均匀分配在哈希表里面
  3. 哈希函数应具有较大的压缩性,以节省内存
  4. 关键字极小的变化可以引起哈希值极大的变化。

哈希冲突解决方法:1.链地址法

链地址法的原理时如果遇到冲突,他就会在原地址新建一个空间,然后以链表结点的形式插入到该空间。

 

下面从百度上截取来一张图片,可以很清晰明了反应下面的结构。比如说我有一堆数据{1,12,26,337,353...},而我的哈希算法是H(key)=key mod 16,第一个数据1的哈希值f(1)=1,插入到1结点的后面,第二个数据12的哈希值f(12)=12,插入到12结点,第三个数据26的哈希值f(26)=10,插入到10结点后面,第4个数据337,计算得到哈希值是1,遇到冲突,但是依然只需要找到该1结点的最后链结点插入即可,同理353。

C++数据结构之哈希表

 

 2. 开放地址法

 

参考文章:

https://www.cnblogs.com/s-b-b/p/6208565.html

https://www.cnblogs.com/jijiji/p/4856805.html

原文链接: https://www.cnblogs.com/xiaoxue126/p/8985115.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++数据结构之哈希表

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/273263

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午11:28
下一篇 2023年2月14日 下午11:28

相关推荐