【考研数据结构题型分类讲解练习】5

您所在的位置:网站首页 线性探测法处理冲突的平均查找长度 【考研数据结构题型分类讲解练习】5

【考研数据结构题型分类讲解练习】5

2024-07-09 06:43| 来源: 网络整理| 查看: 265

做查找之前先看这个

哈希查找方法_Anthony_4926-CSDN博客_哈希快速查找https://blog.csdn.net/weixin_38233103/article/details/118971876

线性探测

本文以例题形式讲解散列查找中,散列表的构建,以及查找成功的ASL和失败的ASL。重点讲解求解失败的ASL的过程,巨详细(后边还有其他例题)

【2010年全国试题41(10分)】将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组,散列函数为: H(key) = (keyx3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。

(1) 请画出所构造的散列表。

(2) 分别计算等概率情况下查找成功和查找不成功的平均查找长度。

表1-1 key78301118914H(key)0365560实际散列位置0365781查找成功需要探测次数1111332

(1)装填因子\alpha =count(key)/n=0.7, 所以 n = 10

表 1-2 012345678971481130189

(2)根据表1-1中 查找查找成功需要探测次数,ASL_{success} = (1+1+1+1+3+3+2)/7=\frac{12}{7}

接下来重点讲解查找失败的ASL

求解查找失败的ASL需要计算出每个散列位置(即每个模对应的值)查找失败所需要的的次数,本题散列函数模的是7,所以只需要计算模为0,1,2,3,4,5,6的关键字查找失败所需要的次数。查找到空说明查找失败,查找示意图如下

查找模为0的关键字,失败时比较的次数为3

查找模为1的关键字,失败时比较次数为2  

 查找模为2的关键字,失败时比较次数为1

查找模为3的关键字,失败时比较次数为2  

 查找模为4的关键字,失败时比较次数为1

 查找模为5的关键字,失败时比较次数为5

 查找模为6的关键字,失败时比较次数为4

 将上述过程整理成表格如下

表1-3 012345678971781130189各个模查找失败需要比较的次数321215

查找失败的平均比较次数为:ASL_{failer} = (3+2+1+2+1+5+4)/7=\frac{18}{7}

二次探测再散列

2.【东北大学2002 二、2 (5分)】设有一组关键字(9, 01,23, 14, 55, 20, 84,27),采用哈希函数: H(key)=key mod 7,表长为10,用开放地址法的二次探测再散列方法

Hi = ( H(key) + di ) mod 10 (di=1^2, 2^2, 3^2, ...)解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

表2-1 901231455208427H(key)=key mod 72120

6

606第一次冲突+13717第二次冲突+440第三次冲突+95实际位置21306745查找需要次数11211234 表2-2 哈希表 012345678914192384275520

查找成功所需的ASL=(1+1+2+1+1+2+3+4)/8=\frac{15}{8}

3.设散列表的表长m=15,散列函数H(key)=key mod 13,关键码集合为(53, 17,12, 61, 89, 70, 87, 25, 64, 46),采用二次探测法处理冲突,试构造闭散列表,并计算查找成功的平均查找长度。

表3-1 key53171261897087256446H(key)14129115912127第一次冲突应散列的位置   +1101313第二次冲突应散列的位置   -111第三次冲突应散列的位置   +41第四次冲突应散列的位置   -48实际散列位置14129115101387查找成功比较次数1111112251 表3-2哈希表 0123456789101112131453177046646187891225

查找成功的A S L=1+1+1+1+1+1+2+2+5+1=\frac{16}{10}=1.6

 

线性探测再散列

4【东北大学2001六(18分)】对下面的关键字集(30, 15, 21, 40, 25,26, 36, 37),若查找表的装填因子为0.8,采用线性探测再散列方法解决冲突。

(1)设计哈希函数; (2)画出哈希表; (3)计算查找成功和查找失败的平均查找长度;

(1) Hey(key) = key % 7;

取模的数一般是比不超过表长的最大质数

(2)

表4-1 key3015214025263637Hey(key)21054512实际散列位置21054637查找成功所需次数11111236 表4-2 哈希表 01234567892115303625402637

(3)查找成功的平均查找长度ASL_{succ}=(1+1+1+1+1+2+3+6)/8=2

表4-3 01234567892115303625402637查找失败需要比较的次数9876543

 查找失败的平均查找长度ASL_{failer}=(9+8+7+6+5+4+3)/7=6

二分查找、判定树 

画出对长度为18的有序的顺序表进行折半查找时的判定树,并指出在等概率时查找成功的平均查找长度,以及查找失败时所需的最多的关键字比较次数。【哈尔滨工业大学2005 四、1(8分)】

判定树如下:

图1-1判定树

查找成功时的ASL=(1+4+12+32+15)/18=\frac{64}{18}

查找失败时ASL=(52+30)/19=\frac{82}{19}

图1-3

以4*13=52为例,解释一下数字的含义。

4:图中的□代表查找失败的节点,“4*13=52”这行的□需要查找四次。比如,对于16来说,查找到16需要四次,再往下找的时候判断它的左节点为空,而此时也就找到了□。13:这行一共有13个□需要查找四次52:这行查找失败的总次数是4*13次

【厦门大学 2002】一颗二叉排序树结构如下,各节点的值从大到小依次为1-9,请标出各节点的值。

二叉排序有一个特点,就是他的中序遍历是从小到大的顺序,因此我们对图1-1进行中序遍历,然后将1-9填入即可

 可以生成下图所示的二叉排序树的关键字初始序列有几种?试写出其中的任意4种。【电子科技大学2005三、2 (6分)】

首先可以确定,第一个数肯定是8。

那么,对于左子树,必须是4是第一个,2和6谁先谁后也无所谓。

所以,根据左子树可以有两个顺序,

8     4     2      6

8     4     6      2

对于9,什么时候插,怎么插也不会插到左子树上去。所以,对于上边那个序列,9可以在下边的下划线的任何一个位置。

8  _ 4  _   2   _   6   _

8  _ 4  _   6   _   2  _

 一共有8种,任意四种如下:

8 9 4 3 68 4 9 2 68 4 2 9 68 4 2 6 9

设T是一棵高度平衡树(又称平衡树),给定关键词K,如果在T中查找K失败,且查找路径上的任一结点的平衡系数皆为零,试回答用高度平衡树插入算法在中插入关键词为K的新结点后,树T的高度是否一定增加?并回答为什么。【吉林大学1996四、2 (7分)】

树的高度一定增加。因为“查找路径上的任一结点的平衡系数皆为零”,从根结点开始查找,根结点的平衡因子为零,说明根的左右子树等高(不一定是满二叉树)。沿左(或右)子树向下查找时,查找路径上所有结点的平衡因子皆为零,说明任一结点的左右子树等高,查找失败是在叶子结点,插入也是在叶子结点,树的高度自然增加。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3