2020年软件评测师证书|考前学习记录2

历年考题中我错了四:关键字序列

【答案】C

【解题必备知识】

一、概念

》哈希表也称为散列表。

》解决哈希冲突有两种方法:闭散列和开散列。

》》开散列也称为哈希桶。

》》闭散列也称为开放地址法或线性探测法。

》闭散列的作用:

》》想往哈希表里插一个数,那就先通过给出来的哈希函数计算该值的哈希地址,如果这个地址被占用了就往后挪一个,直到有空的位置,通俗的讲就是不能插队。

二、公式

key%11–>取余数

【我的解题步骤】

》Step1、建哈希表,哈希表中要求有哈希地址和关键值,哈希地址由题目得知,关键值由计算排序后获得。

》Step2、由哈希函数H(key)=key%11得到第一条信息哈希地址,序列长度为11,哈希地址编 就是0~10,由此可以先画出表格。

Step2的哈希表

》Step3、依次将题目给的关键字序列代入哈希函数求哈希值,求得的哈希值就是对应哈希表中的哈希地址,详细步骤如下:

》》 Step3.1、第一个关键字序列10,代入哈希函数计算10%11=0……1—-》取得余数1,此时对应的哈希表为:

Step3.1的哈希表

》》 Step3.2、继续下一个数34,34%11=3……1――>取得余数1,带入哈希表,此时表中哈希地址为1的关键值已经有值10了,根据线性探查法,不能抢,只能往后挪,所以排到哈希地址为2,此时它的关键值为空,所以可以放,所以此时的哈希表为:

Step3.2的哈希表

》》Step3.3、继续下一个数37,37%11=3……4――>取得余数4,带入哈希表,此时哈希表为:

Step3.3的哈希表

》》Step3.4、继续下一个数51,51%11=4……7――>取得余数7,带入哈希表,此时哈希表为:

Step3.4的哈希表

》》Step3.5、继续下一个数14,14%11=1……3――>取得余数3,带入哈希表,此时哈希表为:

Step3.5的哈希表

》》Step3.6、继续下一个数25,25%11=2……3――>取得余数3,此时哈希地址3已经被关键值14占用,往后挪到4也被关键值37占用,再挪到5时没被占用,此时哈希表为:

Step3.6的哈希表

》》Step3.7、继续下一个数56,56%11=5……1――>取得余数1,此时哈希地址1已经被占用,往后的2,34,5也都被占用,6未被占用,所以此时的哈希表为:

Step3.7的哈希表

》》Step3.8、继续下一个数22,22%11=2……0――>取得余数0,此时的哈希表为:

Step3.8的哈希表

》》Step3.9、继续下一个数3,3%11=0……3――>取得余数3,此时哈希地址3已被占用,往后到8未被占用,所以此时的哈希表为:

Step3.9的哈希表

》Step4、按照哈希表可得关键值为25对应的哈希地址为5,所以选择C

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月19日
下一篇 2020年8月19日

相关推荐