- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前言 概念和术语 7.1 静态查找表 7.2 动态查找表 7.3 哈希表 相关概念和术语 查找 指定某个值,在查找表中确定是否存在一个记录,该记录的关键字等于给定值。 关键字 记录(数据元素)中的某个数据项的值。 主关键字 该关键字可以唯一地标识一个记录。 次关键字 该关键字不能唯一标识一个记录。 静态查找表 对查找表的查找仅是以查询为目的,不改动查找表中的数据。 动态查找表 在查找的过程中同时插入不存在的记录,或删除某个已存在的记录。 查找成功 查找表中存在满足查找条件的记录。 查找不成功 查找表中不存在满足查找条件的记录。 内查找 整个查找过程都在内存中进行。 外查找 在查找过程中需要访问外存。 平均查找长度ASL——查找方法时效的度量 为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值。 查找成功时的ASL计算方法: n:记录的个数 pi:查找第i个记录的概率,且 ( 不特别声明时认为等概率 pi =1/n ) ci:找到第i个记录所需的比较次数 7.1.1 顺序表的查找 [性能分析]: 该算法在查找某一元素时所做的比较次数取决于该元素在表中的位置,所以个元素的查找长度不同,假设每个元素的查找概率相同,则由于个元素的查找长度为1,2,,,,n,因此,整个表的平均查找长度(ASL)为: (1+2+….+n)/n=(n+1)/2 失败的平均查找长度为(n+1)/2 7.1.2 有序表的查找 以有序表表示静态查找表时,Search函数可用折半查找来实现。 折半查找法又称为二分法查找法, 其基本过程是: 将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 图7.1 用折半查找法查找12、50的过程 其中mid=(low+high)/2,当highlow时,表示不存在这样的子表空间,查找失败。 图7.1 用折半查找法查找12、50的过程 其中mid=(low+high)/2,当highlow时,表示不存在这样的子表空间,查找失败。 折半查找的算法 int Search_Bin(elemType a[],int n,? elemType x) /*在有序表ST中折半查找其关键字等于key的元素,若找到,则函数值为该元素在表中的位置,否则为0*/ {???low=0 ; ?? high=n-1; ??? while?(low=high) ???????{ mid=(low+high) / 2; ?????????if?(x= =a[mid])? return mid ;/*找到待查元素*/ ??????? else ?if (keya[mid])??high=mid-1; /*未找到,则继续在前半区间进行查找*/ ??????? else? low=mid+1; /*继续在后半区间进行查找*/ ????????? } ????? return 0; } [性能分析] h=?log2n?+1 {同完全二叉树,二叉树性质4} 成功查找时的平均查找长度: ASLs= 例:ASLS=(1*1+2*2+3*4+4*4)/11=3 不成功查找时的比较次数:最多h次 折半查找方法的优缺点 折半查找方法的优点是比较次数少,查找速度快,平均性能好; 其缺点是要求待查表为顺序存储的有序表,插入删除困难。 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 7.1.3? 索引顺序表的查找 若以索引顺序表表示静态查找表,则Search函数可用分块查找来实现。 分块查找法要求将列表组织成以下索引顺序结构: 首先将列表分成若干个块(子表)。一般情况下,块的长度均匀,最后一块可以不满。每块中元素任意排列,即块内无序,但块与块之间有序。 构造一个索引表。其中每个索引项对应一个块并记录每块的起始位置,和每块中的最大关键字(或最小关键字)。索引表按关键字有序排列。 图7.2 分块查找法示意图 分块查找的基本过程: ⑴ 首先,将待查关键字K与索引表中的关键字进行比较,以确定待查记录所在的块。具体的可用顺序查找法或折半查找法进行。 ⑵ 进一步用顺序查找法,在相应块内查找关键字为K的元素。 例如,在上述索引顺序表中查找38。首先,将38与索引表中的关键字进行比较,因为22<38≤48,所以36在第二个块中,进一步
您可能关注的文档
最近下载
- 人教版小学四年级上册语文期末试卷及答案).doc VIP
- 烃源岩评价油源对比.pdf VIP
- 满天星的遗传转化体系的构建方法.pdf VIP
- 医疗废物处理、消毒管理制度.pdf VIP
- 焊工职业病预防.pptx VIP
- IATF 169492016 条款8.5.6“更改控制”标准解读与操作指南.docx VIP
- 2025年学历类自考专业(电子商务)商法(二)-电子商务概论参考题库含答案解析.docx VIP
- 人教版专题4.7 极值点偏移问题【2024年高考数学一轮复习题型突破】及试题解析.doc VIP
- 《逻辑学》全套PPT课件.pptx
- 部编版五年级语文上册说明性文本阅读专项突破卷附答案.doc VIP
原创力文档


文档评论(0)