散列函数名词解释(数据结构与算法中哈希表的详解)

Posted

篇首语:精神的浩瀚,想象的活跃,心灵的勤奋,就是天才。本文由小常识网(cha138.com)小编为大家整理,主要介绍了散列函数名词解释(数据结构与算法中哈希表的详解)相关的知识,希望对你有一定的参考价值。

散列函数名词解释(数据结构与算法中哈希表的详解)

点击蓝字 关注我们

★哈希表(散列表)

今天小企鹅和大家分享和学习我们数据结构与算法中哈希表的一些知识。首先先问两个问题什么是哈希表?我为什么要去用他呢?

哈希表又称散列表。

哈希表存储的基本思想是:以数据表中的每个记录的关键字 k为自变量,通过一种函数H(k)计算出函数值。把这个值解释为一块连续存储空间(即数组空间)的单元地址(即下标),将该记录存储到这个单元中。在此称该函数H为哈希函数或散列函数。按这种方法建立的表称为哈希表或散列表。这是我们哈希表的定义和原理,接下来我们看看具体例子;

哈希表存储原理

例如我们现在要存的数据是(3,15,22,24)

存储到我们编号为0到4的表长为5的哈希表中,如果我们的哈希函数是:K(k)=k%5;

那将会得到下面的哈希表:

现在这样看看是没有什么问题,但是经过这样计算有没有计算结果一样的呢?答案肯定是有的,比如我现在要把数据25存进去然后我发现计算25%5=0,那把它放到0的位置,但是0的位置已经放了15了。我们把这种数据不一样但是经过哈希函数计算后的结果是一样的叫冲突,我们研究哈希表就是要研究:

1、我们如何设计我们的哈希函数,可以尽可能地减少我们冲突。

2、如果实在避免不了我们应该如何解决这个问题。

哈希表的常用构造方法

一、直接地址法:

直接定址法是以关键字k本身或关键字加上某个数值常量c作为哈希地址的方法。该哈希函数H(k)为: H(k)=k+c (c≥0)

2.除留余数法

取关键字k除以哈希表长度m所得余数作为哈希函数地址的方法。即: H(k)=k%m

注:在m取值为素数(质数)时,冲突可能性相对较少。

还有一些比较多的构造方法感兴趣可以自己去查找资料,因为说白了这部分就没固定的知识可以讲的。

冲突的解决办法

已知哈希表地址区间为0~10,给定关键字序列 (20,30,70,15,8,12,18,63,19)。哈希 函数为H(k)=k%11,

这个才是重点要了解的,当遇到冲突的时候我们解决,解决班也有很多种,我就挑一个比较好的解决办法讲一下——链地址法:

用链地址法解决冲突的方法是:把所有关键字为同义词的记录存储在一个线性链表中,这个链表称为同义词链表。并将这些链表的表头指针放在数组中(下标从0到m-1)。这类似于图中的邻接表和树中孩子链表的结构。

看到表的结构我们就知道他是怎么解决冲突的了,当发现计算的值产生冲突时你建立一个链表存放,直接就很好解决了冲突的问题。

那这样的表我们怎么查找和使用里面的值呢?举个例子:我们现在要查找63这个数,那我们首先按照哈希函数计算63%11=8,我就找到下标为8 的链表,然后就是按值查找链表,这样就完成了对数据的查找和使用。

希望看到这里对你理解哈希表有一定的帮助,哈希表其他没涉及到的知识点如果感兴趣你可以私信我,可以一起探讨一下。

相关参考

步进电机的加减速(一文详解电机S曲线加减速控制)

1、S型曲线1.1简介Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。Sigmoid函数也叫Logistic函数,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。该S型函数有以下优缺点:优点是平滑,...

数据透视表是干嘛的(数据透视表的应用)

...何将三列互相独立的数据转换为有价值的汇总表呢?任何函数都不需要,只需要进行简单的【数据透视】就行!学会【数据透视】,办公效率提升10倍不止!!!具体方法如下:一、选中全部内容,点ABC列也行,或者直接CTRL+A选...

最高车速收敛精度(4分钟训练完ImageNet可扩展超大规模GPU收敛算法详解)

腾讯机智机器学习平台和香港浸会大学计算机科学系褚晓文教授团队合作,在ImageNet数据集上,4分钟训练好AlexNet,6.6分钟训练好ResNet-50,创造了AI训练世界新纪录。本文带来详细解读。2018年6月25日,OpenAI在其Dota25v5中取得一定成...

时间上T的意思(一次函数实际问题,看懂题图是关键。详解初中数学题188。)

188:小明从家骑自行车出发,沿一条直路到相距2400m的邮局办事,小明出发的同时,他的爸爸以96m/min的速度从邮局沿同一条道路步行回家,小明在邮局停留2min后沿原路以原速返回,设他们出发后经过tmin时,小明与家之间的距离为...

异步电机变压变频调速基本原理(详解SPWM与SVPWM的原理、算法以及两者的区别)

SPWM与SVPWM所谓SPWM,就是在PWM的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规律排列,这样输出波形经过适当的滤波可以做到正弦波输出。它广泛地用于直流交流逆变器等,比如高级一些的UPS就是一个例子。三相SPWM...

洗衣机水位1234代表多少升水(FIND、FINDB、SEARCH、SEARCHB函数详解)

_Excel公式教程转载▼标签:excel公式教程find函数findb函数search函数searchb函数分类:Excel公式教程-函数篇 文本查找函数包括四个:FIND、FINDB、SEARCH和SEARCHB,它们具有完全相同的语法。【语法1】FIND(find_text,within_text,[start_num])【语法...

洗衣机水位1234代表多少升水(FIND、FINDB、SEARCH、SEARCHB函数详解)

_Excel公式教程转载▼标签:excel公式教程find函数findb函数search函数searchb函数分类:Excel公式教程-函数篇 文本查找函数包括四个:FIND、FINDB、SEARCH和SEARCHB,它们具有完全相同的语法。【语法1】FIND(find_text,within_text,[start_num])【语法...

弹簧伸长量与拉力关系(211010:实验探究弹簧弹力与形变量的关系「让学」连载(023))

...关系图象。2.以弹簧的伸长量为自变量,写出曲线所代表的函数关系式。首先尝试一次函数,如果不行,则考虑二次函数等。3.得出弹力和弹簧伸长之间的定量关系,解释函数表达式中常数的物理意义。方法总结 实验数据处理的三种...

方型卧式自动排气阀(氨用阀门特点、原理、使用以及具体产品详解,化工企业都需要)

...与钢瓶连接,低压腔为气体出口,并通往使用系统。高压表的示值为钢瓶内贮存气体的压力,

测计计(Java设计模式之策略模式示例详解)

...Java23种设计模式中的行为模式之一,该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。今天将通过示例详细讲解这一模式,需要的可以参考一下什么是策略模式现...