- 1、本文档共124页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
图8.14链地址法处理冲突时的哈希表8.4.4哈希法性能分析由于冲突的存在,哈希法仍需进行关键字比较,因此仍需用平均查找长度来评价哈希法的查找性能。哈希法中影响关键字比较次数的因素有三个:哈希函数、处理冲突的方法以及哈希表的装填因子。哈希表的装填因子α的定义如下:α可描述哈希表的装满程度。显然,α越小,发生冲突的可能性越小,而α越大,发生冲突的可能性越大。假定哈希函数是均匀的,即该哈希函数对同一组中的各个关键字产生冲突的可能性是相同的,则影响平均查找长度的因素只剩下两个:处理冲突的方法以及α。哈希表的平均查找长度是装填因子α的函数,而与待散列元素数目n无关。因此,无论元素数目n有多大,都能通过调整α,使哈希表的平均查找长度较小。在用开放定址法构造哈希表时,会产生非哈希函数引起的冲突,且记录的个数不能大于哈希表表长。采用链地址法则不会出现这些情况,但需要一些额外的空间。本章小结本章学习了与查找有关的一些基本概念,学习了线性表、树表及哈希表查找法。线性表查找法介绍顺序查找和折半查找,折半查找只适用于顺序存储的有序表,其关键字比较次数最多不超过判定树的深度。树表查找法介绍了二叉排序树的查找、插入、删除,二叉排序树上进行查找时的平均查找长度和二叉排序树上的形态有关。哈希查找法是一种计算式查找方法,本章介绍了哈希查找的概念和基本思想。实现哈希查找必须要构造合适的哈希函数,构造哈希函数的方法有多种多样,常用的有数字分析法、平方取中法、除留余数法、分段叠加法和伪随机数法。哈希函数是一种“压缩映射”,它把记录关键字取值很大的数据集合映射到一个范围确定的表中,因此,冲突是不可避免的,本章介绍了两种解决冲突的主要方法,即开放定址法和链地址法。习题八一、单选题1.对线性表进行二分查找时,要求线性表必须。A.以顺序方式存储 B.以链接方式存储C.以顺序方式存储且结点按关键字有序排列D.以链接方式存储且结点按关键字有序排列2.采用顺序查找方法查找长度为n的线性表时,每个元素的平均查找长度为。A.?nB.?n/2 C.?(n?+?1)/2D.?(n-1)/23.采用二分查找长度为n的线性时,每个元素的平均查找长度为。A.?O(n2) B.O?(nlog2n) C.?O(n) D.?O(log2n)4.有一个有序表为(5,7,8,22,32,40,45,62,70,77,82,97,100),当二分查找值为82的结点时,次比较后查找成功。A.?1B.?3C.?4 D.?85.从一个具有n个结点的单链表中查找其值等于x结点时,查找成功的情况下,需平均比较个结点。A.?nB.?n/2C.?(n–1)/2 D.?(n?+?1)/2二、填空题1.假设在有序线性表A[1],…,A[20]上进行二分查找,则比较一次查找成功的结点数为,则比较二次查找成功的结点数为,则比较三次查找成功的结点数为,则比较四次查找成功的结点数为,则比较五次查找成功的结点数为,平均查找长度为。2.在散列存储中,装填因子α的值越大,存取数据元素时发生冲突的可能性;α的值越小,则发生冲突的可能性。三、简答题设有一组关键字(19,01,23,14,55,20,84,27,68,11,10,77),采用哈希函数H(key)=key%13采用开放地址法的线性探测再散列方法解决冲突,试在[0…12]的散列地址空间中对该关键字序列构造哈希表。2.对上题中的关键字序列,采用链地址法,画出相应的哈希表。3.对有序表(5,8,27,36,45,48,57,72,89,95),采用二分查找,画出二分查找过程的二叉判定树,并计算其平均查找长度。四、算法设计题1.将折半查找算法改写为递归的形式。2.以线性探测再散列为例,给出散列表的查找算法。实训8-1分块查找【实训目的】掌握顺序查找与折半查找的特点。【实训要求】用分块查找【相关知识】分块查找又称索引顺序查找。它是一种顺序查找的改进方法,用于在分块有序表中进行查找。分块有序表指将长度为n的线性表分成m个子表,各
文档评论(0)