1、哈希表函数采用H(key)=key%P(其中P=13),若发生冲突后,用线性探测开放定址发解决冲突,并实现查找功能
ASLsucc = (1 + 2 + 1 + 2 + 1 + 1 + 3 + 1) / 8 = 1.5
10%11=10 a[9]=10
8%11=8 a[7]=8
46%11=2
23%11=1 a[0]=23
19%11=8
56%11=1
21和10冲突且a[10]空,所以a[10]=21
46和57冲突 且a[2]空 所以 a[2]=46
19和8冲突 且a[8]空 所以 a[8]=19
56和23冲突 且a[1]、a[2]不空,daoa[3]空 a[3]=56
最后是23,57,46,56,27,空,40,8,19,10,21,空,空
查找成功的平均长度:6*1+3*2+1*3=15
查找不成功的平均长度:6+5+4+3+2+1+6+5+4+3+2+1=42
扩展资料:
冲突:在哈希表中,不同的关键字值对应到同一个存储位置的现象。即关键字K1≠K2,但H(K1)= H(K2)。均匀的哈希函数可以减少冲突,但不能避免冲突。发生冲突后,必须解决;也即必须寻找下一个可用地址。
将关键字分割成位数相同的几部分(最后一部分的位数可以不同),然后取这几部分的叠加和(舍去进位)作为哈希地址,这方法称为折叠法。
例如:每一种西文图书都有一个国际标准图书编号,它是一个10位的十进制数字,若要以它作关键字建立一个哈希表,当馆藏书种类不到10,000时,可采用此法构造一个四位数的哈希函数。
参考资料来源:百度百科-哈希函数
解题过程:
(1)计算h(k): 38%6 = 2 25%6 = 1 74%6 = 2 63%6 = 3 52%6 = 4 48%6 = 0
(2)定址:
地址: 0 1 2 3 4 5
1、线性表第1个元素(38): 38(第1 次不冲突)
2、线性表第2个元素(25): 25(第1次不冲突)
3、线性表第3个元素(74): 74(第1 次冲突,地址 + 1)
4、线性表第3个元素(74): 74(第2 次不冲突)
5、线性表第4个元素(63): 63(第1 次冲突,地址 + 1)
6、线性表第4个元素(63): 63(第2 次不冲突)
7、线性表第5个元素(52): 52(第1 次冲突,地址 + 1)
8、线性表第5个元素(52): 52(第2 次不冲突)
9、线性表第6个元素(48): 48(第1次不冲突)
经过上述定址过程,线性表中的各个元素都有了唯一的地址。
1、哈希表函数采用H(key)=key%P(其中P=13),若发生冲突后,用线性探测...
已知一个线性表(38,25,74,63,52,48),假定采用h(k)=k%6计算散列地址进行散列存储,若用线性探测的开放定址法处理冲突,解题过程:(1)计算h(k): 38%6 = 2 25%6 = 1 74%6 = 2 63%6 = 3 52%6 = 4 48%6 = 0 (2)定址:地址: 0 1 2 ...
哈希表常用方法
直接寻址法采用关键字或线性函数值作为散列地址。简单形式为 H(key) = key 或 H(key) = a * key + b(a 和 b 为常数)。若地址已存在,将元素放置于下一个空位,直至找到空地址。这种方法适合数据分布均匀的场景。数字分析法通过识别数据内部规律,减少冲突。以员工出生年月日为例,前几位数字...
hash函数的构造方法
选择一个随机函数,取关键字的随机函数值为它的哈希地址,即H(key)=random(key),其中random为随机函数。通常_当关键字长度不等时采用此法构造哈希函数较恰当。冲突的处理:哈希表中,不同的关键字值对应到同一个存储位置的现象。即关键字K1≠K2,但H(K1)=H(K2)。均匀的哈希函数可以减少冲突,...
哈希函数构造方法
哈希函数构造方法有:直接定址法,数字分析法。1.直接定址法 取关键字或关键字的某个线性函数值为哈希地址。即:H(key)=key或H(key)=akey+b, 其中a和b为常数(这种哈希函数叫做自身函数)。例如:有一个从1岁到100岁的人口数字统计表,其中,年龄作为关键字,哈希函数取关键字自身。标图1直...
哈希表长m=14,哈希函数H(key)=key%11。表中已有4个节点:
初始地址:addr(49)=49 % 11=5有冲突 使用二次探测再散列法处理冲突:addr(49)=(5+1)%14=6有冲突 addr(49)=(5-1)%14=4有冲突 addr(49)=(5+4)%14=9无冲突
设哈希函数H(key)=key MOD 13,用线性探测再散列法解决冲突.
23%11=1 a[0]=23 19%11=8 56%11=1 21和10冲突且a[10]空,所以a[10]=21 46和57冲突 且a[2]空 所以 a[2]=46 19和8冲突 且a[8]空 所以 a[8]=19 56和23冲突 且a[1]、a[2]不空,daoa[3]空 a[3]=56 最后是23,57,46,56,27,空,40,8,19,10,21,空,空 查找...
哈希表的常用方法
实际工作中需视不同的情况采用不同的哈希函数,通常考虑的因素有:· 计算哈希函数所需时间· 关键字的长度· 哈希表的大小· 关键字的分布情况· 记录的查找频率1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列...
请教哈希函数双散列是如何计算的?
关键字K1≠K2,但H(K1)= H(K2)。均匀的哈希函数可以减少冲突,但不能避免冲突。发生冲突后,必须解决;也即必须寻找下一个可用地址。在哈希表中,不同的关键字值对应到同一个存储位置的现象。开始插入59,i=0,h(59,0)=(59 mod 11 + 0*(1+59 mod 9)) mod 11=4,位置4与37冲突,...
哈希函数哈希表的概念及作用
在哈希表的数据结构中,关键元素的存储位置是由哈希函数决定的。哈希函数H(key)将数据元素的键作为输入,计算出一个数值,作为该元素在表中的存储地址。具体表示为:Addr = H(key)在构建哈希表时,有两个核心问题需要考虑:构造哈希函数: 一个理想的哈希函数需要保证计算结果的均匀分布,以便快速定位...
如何解决哈希表中的冲突问题?
进行哈希计算得到哈希地址,再将其存储到指定地址。如果该地址已有元素,称之为存在“冲突”,再采用冲突检测法处理冲突,如线性探测再散列法。如元素的值为95时,采用哈希函数h(k)=k mod 11时,得到的哈希地址为7,即h(95) = 95 % 11 = 7。针对本题:(1)构造哈希表,有11个地址空间(0~...