- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构复习1209
例如,给定排序码46,55,13,42,94,05,17,70,二路归并排序过程如图7-10所示。算法P284 例如,给定排序码25,48,16,35,79,82,23,40,36,72为5个长度为2的有序表,二路归并排序过程 线性表的查找 顺序查找---最简单的查找方法 顺序查找的基本思想 从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键字和待找的值K相比较,若相等,则查找成功,若整个表扫描完毕,仍末找到关键字等于K的元素,则查找失败。 顺序查找既适用于顺序表,也适用于链表。若用顺序表,查找可从前往后扫描,也可从后往前扫描,但若采用单链表,则只能从前往后扫描。另外,顺序查找的表中元素可以是无序的。 二分查找(折半查找) 1.二分查找的基本思想 高效率的查找方法。要求表中元素按关键字有序(升序或降序)。假设表中元素为升序排列。 二分查找的基本思想是: 首先将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功; 否则利用中间位置记录将表分成前、后两个子表, 如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 例如,假设给定有序表中关键字为: {05,13,19,21,37,56,64,74,80,88,92},查找K=21的情况: 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 例如,假设给定有序表中关键字为: {2,5,7,10,14,15,18,23,35,41,52},查找K=12的情况: 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 例如,假设给定有序表中关键字为: {2,5,7,10,14,15,18,23,35,41,52},查找K=12的情况: Hig=mid-1low 结束 故比较三次结束,查找不成功. 哈希查找(散列查找 ) 基本概念 哈希查找:既是一种查找方法,又是一种存贮方法,称为散列存贮。散列存贮的内存存放形式也称为哈希表或散列表。 散列查找,与前面介绍的查找方法不同,前面介绍的查找都是基于待查关键字与表中元素进行比较而实现的查找方法,而散列查找是通过构造哈希函数来得到待查关键字的地址。 如要找关键字为k的元素,只需求出哈希函数值H(k),H(k)为代表关键字k在存贮区中的地址,而存贮区为一块连续的内存单元,可用一个一维数组(或链表)来表示。 在散列存贮中,冲突是很难避免的,哈希函数选得差,则发生冲突的可能性越大。把相互发生冲突的关键字互称为“同义词”。 使用哈希方法,首先要选择一个好的哈希函数,使一组关键值所得到的哈希地址能均匀分布在整个地址空间中,并且冲突次数尽可能地少。 哈希存贮----将大的关键字的值映射到小的地址空间中,故不可避免地会产生冲突。 发生冲突的可能性与三个方面因素有关: 第一:装填因子α(哈希表中己存入的元素个数n与哈希表的大小m的比值,即α=n/m)。当α越小时,发生冲突的可能性越小,α越大(最大为1)时,发生冲突的可能性就越大。 不能将α变得太小,这样会造成大量存贮空间的浪费,因此必须兼顾存储空间和冲突两个方面(0.6—0.9)。 第二:哈希函数。 第三:解决冲突的方法。 解决冲突的方法 常见的解决冲突方法如下: 1.开放定址法 开放定址法----从发生冲突的那个单元开始,按照一定的次序,从哈希表中找出下一个空闲的存储单元,把发生冲突的待插入关键字存储到该单元中,从而解决冲突。 开放定址法求“下一个”空地址的公式(探测序列): Hi=(H(key)+di) M
文档评论(0)