收藏 分享(赏)

线性探测再散列查找成功和不成功的相关问题.doc

上传人:nacm35 文档编号:4874580 上传时间:2019-01-18 格式:DOC 页数:3 大小:28.50KB
下载 相关 举报
线性探测再散列查找成功和不成功的相关问题.doc_第1页
第1页 / 共3页
线性探测再散列查找成功和不成功的相关问题.doc_第2页
第2页 / 共3页
线性探测再散列查找成功和不成功的相关问题.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、线性探测再散列法查找成功和查找不成功的平均查找长度Question1:将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从 0 开始的一维数组,散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为 0.7。(1) 请画出所构造的散列表。(2) 分别计算等概率情况下查找成功和查找不成功的平均查找长度。Ans:(1).首先明确一个概念装载因子,装载因子是指所有关键子填充哈希表后饱和的程度,它等于 关键字总数/哈希表的长度。 根据题意,我们可以确定哈希表的长度为 L = 7/0.7 = 10;因此

2、此题需要构建的哈希表是下标为 09 的一维数组。根据散列函数可以得到如下散列函数值表。H(Key) = (keyx3) MOD 7, 例如 key=7 时, H(7) = (7x3)%7 = 21%7=0,其他关键字同理。Key 7 8 30 11 18 9 14 H(Key) 0 3 6 5 5 6 0 (表 1)采用线性探测再散列法处理冲突,所构造的散列表为:地址 0 1 2 3 4 5 6 7 8 9 关键字 7 14 8 11 30 18 9 (表 2)下面对散列表的构造方式加以说明,注意表 1 中的关键字 7 和 14,30 和 9, 11 和 18,这三组关键子的 H(Key)值相

3、同,这在构建散列表时就会产生冲突,因为他们的地址相同,所以要通过一定的冲突处理方法来解决这个问题。依题,采用线性探测再散列法处理冲突。下面详细介绍如何构建散列表:第一个 key 7,它的地址是 0,因此放到散列表的数组下表为 0 的位置,这个位置上没有关键字,因此没有冲突可以直接填入;第二个 key 8,它的地址是 3,因此放到散列表的数组下表为 3 的位置,这个位置上没有关键字,因此没有冲突可以直接填入;第三个 key 30,它的地址是 6,因此放到散列表的数组下表为 6 的位置,这个位置上没有关键字,因此没有冲突可以直接填入;第四个 key 11,它的地址是 5,因此放到散列表的数组下表为

4、 5 的位置,这个位置上没有关键字,因此没有冲突可以直接填入;第五个 key 18,它的地址是 5,因此放到散列表的数组下表为 5 的位置,但这个位置上已经有关键字 11,遇到了冲突,此时我们根据线性探测再散列法来处理这个冲突,探测下一个位置 6, 6 这个位置上已经存在关键字 30 则继续增加步长 1,因此现在的新地址应为 7,位置 7 上没有关键字,放入即可,到此冲突已经解决;第六个 key 9,它的地址是 6,因此放到散列表的数组下表为 6 的位置,但这个位置上已经有关键字 30,遇到了冲突,探测下一个位置 7, 7 这个位置上已经存在关键字 18 则继续增加步长 1,因此现在的新地址应

5、为 8,位置 8 上没有关键字,放入即可; 第七个 key 14,它的地址是 0,因此放到散列表的数组下表为 0 的位置,但这个位置上已经有关键字 7,遇到了冲突,探测下一个位置 1, 位置 1 上没有关键字,放入即可; 到这一步所有关键字均已填入,散列表已经构造完成,如表 2 所示。(2)等概率情况下查找成功平均查找长度:这一问可以根据第一问的构造过程求解:key7 一次就填入了表中,因此查找次数为 1,同理 8, 30, 11 查找次数均为 1; key18 进行了 3 次放入操作,探测位置分别是 5,6,7 ,因此查找次数为 3;key9 也是 3 次;key14 进行了两次探测,因此查

6、找次数为 2。次数表如表 3 所示Key 7 8 30 11 18 9 14 Count 1 1 1 1 3 3 2 (表 3)所以 ASLsuccess= (1+1+1+1+3+3+2)/ 7 = 12/7。 等概率情况下查找不成功的平均查找长度:接下来讨论不成功的情况, 看表 2,计算查找不成功的次数就直接找关键字到第一个地址上关键字为空的距离即可, 但根据哈希函数地址为 MOD7,因此初始只可能在 06 的位置。等概率情况下,查找 06 位置查找失败的查找次数为:看地址 0,到第一个关键字为空的地址 2 的距离为 3,因此查找不成功的次数为 3. 地址 1, 到第一个关键为空的地址 2

7、的距离为 2,因此查找不成功的次数为 2.地址 2, 到第一个关键为空的地址 2 的距离为 1,因此查找不成功的次数为 1.地址 3,到第一个关键为空的地址 4 的距离为 2,因此查找不成功的次数为 2.地址 4,到第一个关键为空的地址 4 的距离为 1,因此查找不成功的次数为 1.地址 5,到第一个关键为空的地址 2(注意不是地址 9,因为初始只可能在 06 之间,因此循环回去)的距离为 5,因此查找不成功的次数为 5.地址 6,到第一个关键为空的地址 2(注意不是地址 9,因为初始只可能在 06 之间,因此循环回去)的距离为 4,因此查找不成功的次数为 4.因此查找不成功的次数表如下表所示Key 7 8 30 11 18 9 14 Count 3 2 1 2 1 5 4 (表 4) 所以 ASLunsuccess= (3+2+1+2+1+5+4)/ 7 = 18/7。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报