历年考题中我错了四:关键字序列
【答案】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进行处理,非常感谢!