设有一组关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },散列函数为 h(key)=key%17,采用线性探测方法解决冲突。试在 0 到 18 的散列地址空间中对该关键字序列构造散列表,则成功查找的平均查找长度为 __

时间: 2023-05-31 18:21:07 浏览: 282
### 回答1: 根据散列函数 h(key)=key%17,将关键字序列散列到 到 16 的地址空间中,得到以下散列表: : 15 1: 01 2: 13 3: 74 4: 56 5: 20 6: 27 7: 69 8: 9 9: 10 10: 29 11: 12: 13: 14: 15: 87 16: 其中,冲突的关键字 29 和 01 分别散列到了地址 10 和 1,需要采用线性探测方法解决冲突。具体地,将关键字 29 插入到地址 10 后面的空槽中,得到: : 15 1: 01 2: 13 3: 74 4: 56 5: 20 6: 27 7: 69 8: 9 9: 10 10: 29 11: 12: 13: 14: 15: 87 16: 然后,将关键字 01 插入到地址 1 后面的空槽中,得到: : 15 1: 01 2: 13 3: 74 4: 56 5: 20 6: 27 7: 69 8: 9 9: 10 10: 29 11: 12: 13: 14: 15: 87 16: 此时,散列表中所有关键字都已插入完成。对于任意一个关键字,查找的平均查找长度为: (1*1 + 2*1 + 3*1 + 4*1 + 5*1 + 6*1 + 7*1 + 8*1 + 9*1 + 10*1 + 11*2) / 12 = 1.75 因此,成功查找的平均查找长度为 1.75。 ### 回答2: 首先,我们根据散列函数h(key)=key mod 19将关键字映射到0到18的散列地址上。 29 -> 10 01 -> 1 13 -> 13 15 -> 15 56 -> 17 20 -> 1 87 -> 5 27 -> 8 69 -> 14 9 -> 9 10 -> 10 74 -> 16 接下来,按照线性探测方法,将关键字插入散列表中。如果某个位置已经被占用,就将检查下一个位置,直到找到一个空位置为止。 首先,将10插入散列表,位置10被占用,向下探测,插入16。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 下一个关键字01被散列到位置1,位置1被占用,向下探测,插入20。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 接下来,关键字13和15均被散列到空位置13和15。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 关键字56被散列到位置17,位置17被占用,向下探测,插入5。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 关键字20被散列到位置1,位置1已经被占用,向下探测,插入27。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 关键字87被散列到位置5,位置5被占用,向下探测,插入14。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 关键字27被散列到位置8,位置8被占用,向下探测,插入9。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 最后,关键字69、9和10均被散列到空位置。 10 -> 29 16 -> 01 13 -> 13 15 -> 15 17 -> 56 1 -> 20 87 -> 5 8 -> 27 69 -> 14 9 -> 9 10 -> 10 74 -> 16 对于每个关键字,我们需要查找一次来确定它应该插入的位置。因此,成功查找的平均查找长度为: (1+1+1+1+1+2+1+1+1+1+1)/11 = 1 因此,成功查找的平均查找长度为1。 ### 回答3: 线性探测方法是一种解决冲突的散列表技术,它采用了线性搜索的方式来解决冲突。对于该题组的关键字 { 29,01, 13,15,56,20,87,27,69,9,10,74 },我们采用散列函数 h(key)=key%18,映射到0到18的散列地址空间。 首先,我们将关键字29散列到地址11,该地址没有被占用,故可以直接存入该地址。关键字01散列到地址1,地址1被占用,发生了冲突。此时,我们通过线性探测的方式,逐一检查地址2、3、4..直到发现地址5未被占用,将01存入地址5处。同样地,13、15、56、20、27、69、9、10、74均被安置在散列表中。 因此,最终的散列表如下: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 - 01 - - - 15 56 - - 69 10 29 20 - 13 - - 27 74 假设查找关键字的概率相等,则成功查找的平均查找长度为: ASL = (1/12)*1 + (1/12)*2 + (1/12)*3 + (1/12)*4 + (1/12)*2 + (1/12)*1 + (1/12)*2 + (1/12)*2 + (1/12)*3 + (1/12)*4 + (1/12)*1 + (1/12)*1 = 1.83 因此,成功查找的平均查找长度为1.83。

相关推荐

最新推荐

recommend-type

〖程序设计基础〗练习题2及答案

21. 用于定义类成员的访问控制权的一组关键字是( )。 A) class, float, double, public B) float, boolean, int, long C) char, extends, float, double D) public, private, protected 22. 不能构成循环的语句是( ...
recommend-type

elastic-ca证书

elastic-ca证书
recommend-type

源代码-ip封锁程序ASP通用版本.zip

源代码-ip封锁程序ASP通用版本.zip
recommend-type

tensorflow-gpu-2.9.0-cp39-cp39-win-amd64.whl

python
recommend-type

颗粒活性碳市场 - 2024-2032 年行业分析、市场规模、市场份额和预测.docx

颗粒活性碳市场,按原料、按应用、按最终用户、按阶段、按国家和地区划分 - 2024-2032 年行业分析、市场规模、市场份额和预测
recommend-type

中文翻译Introduction to Linear Algebra, 5th Edition 2.1节

中文翻译Introduction to Linear Algebra, 5th Edition 2.1节 线性代数的核心问题是求解方程组。这些方程都是线性的,即未知数仅与数相乘——我们绝不会 遇见 x 乘以 y。我们的第一个线性方程组较小。接下来你来看看它引申出多远: 两个方程 两个未知数 x − 2y = 1 3x + 2y = 11 (1) 我们一次从一个行开始。第一个方程 x − 2y = 1 得出了 xy 平面的一条直线。由于点 x = 1, y = 0 解 出该方程,因此它在这条直线上。因为 3 − 2 = 1,所以点 x = 3, y = 1 也在这条直线上。若我们选择 x = 101,那我们求出 y = 50。 这条特定直线的斜率是 12,是因为当 x 变化 2 时 y 增加 1。斜率在微积分中很重要,然而这是线 性代数! 图 2.1 将展示第一条直线 x − 2y = 1。此“行图”中的第二条直线来自第二个方程 3x + 2y = 11。你 不能错过两条线的交点 x = 3, y = 1。点 (3, 1) 位于两条线上并且解出两个方程。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

识别MATLAB微分方程求解中的混沌行为:分析非线性方程混沌行为的实用技巧

![matlab求解微分方程](https://img-blog.csdnimg.cn/2021062810300367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTQ3OTY3OA==,size_16,color_FFFFFF,t_70) # 1. MATLAB微分方程求解概述 微分方程是描述物理、工程和金融等领域中动态系统的数学模型。MATLAB提供了强大的工具来求解微分方程,包括内置求解器和自定义函数
recommend-type

physon如何做ERP系统

作为一个AI语言模型,我可以给您提供一些基本的建议和思路: 1.明确需求和目标:在开始开发ERP系统之前,需要明确您的业务需求和目标,了解您的业务流程、流程数据、员工角色和权限、财务管理等方面的要求,这样才能更好的设计和开发ERP系统。 2.选择技术框架和开发工具:选择合适的技术框架和开发工具是ERP系统开发的关键。选择一种流行的技术框架和工具可以提高开发效率和质量。 3.设计数据库:ERP系统需要一个功能强大的数据库来存储数据。设计数据库需要考虑数据的完整性、安全性和可扩展性。 4.设计系统架构:系统架构是ERP系统的骨架,需要考虑系统的可扩展性、可维护性和性能。 5.开发和测试:
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。