1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找表是一种在实际应用中得到大量应用的数据结构,是由同一类型的数据元素(或记录)构成的集合。 由于“集合”中的数据元素之间存在着完全松散的关系,查找表是一种非常灵便的数据结构。 对查找表经常进行的操作有: 查询某个“特定的”数据元素。 检索某个“特定的”数据元素的各种属性。 在查找表中插入一个数据元素。 从查找表中删除某个数据元素。 查找表:同一类型的数据元素(属性)构成的集合。 静态查找表:只允许进行查找操作,而不能改变表中数据元素。 动态查找表:除查找操作外,还允许向表中插入或删除数据元素。 关键字:是数据元素中某个数据项的值,用它可标识一个数据元素。 主关键字:唯一标识一个记录的关键字。 次关键字:识别若干记录的关键字。 查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。 若表中存在这样的记录,则查找成功,结果为整个记录的信息,或记录在表中的位置。 若表中不存在这样的记录,则查找不成功,结果给出一个“空”记录或“空”指针。 平均查找长度。查找的主要操作是关键字的比较,所以通常把查找过程中对关键字要执行的平均比较次数(平均查找长度)作为衡量一个查找算法的标准。 平均查找长度定义为: ASL=∑pici 期中,i = n,n是元素个数;pi是查找第i个元素的概率(一般考虑的是相同概率);ci是找到第i个元素索要进行的比较次数。 静态查找表可以用顺序表或链表加以表示,本节中只讨论顺序表上的查找实现。 顺序表上的3种查找方法: 顺序查找 二分查找 分块查找 顺序查找:从表中第一个(最后一个)记录开始,逐个进行关键字和给定值的比较,若值相同,则查找成功;若查到最后一个(第一个)记录,比较的值不相同,则查找不成功。 对第2章的顺序表加以改造: 将listElem表视为查找表的记录表(不包含关键字); 另设置一个key的关键字表(类型为可比较的数据类型); key序号对应于listElem的序号; 对顺序表的查找在key表中进行;根据查找得到的序号在listElem表中获取对应的记录数据。 对原顺序表中的一些操作做适当调整。 分块查找(Blocking Search)又称索引顺序查找。它是一种性能介于顺序查找和二分查找之间的查找方法。 二分查找表由“分块有序”的线性表和索引表组成。 “分块有序”的线性表 关键字表key[1..n]均分为b块,前b-1块中关键字个数为 ,第b块的关键字数小于等于s;每一块中的关键字不一定有序,但前一块中的最大关键字必须小于后一块中的最小关键字,即表是“分块有序”的。 索引表 抽取各块中的最大关键字及其起始位置构成一个索引表Index[l..b],即:Index[i](1≤i≤b)中存放第i块的最大关键字及该块在表key中的起始位置。由于表key是分块有序的,所以索引表是一个递增有序表。 动态查找表的特点是: 表结构本身是在查找过程中动态生成的; 若存在给定的关键字key的记录,则查找成功; 否则,在查找表中插入关键字为key的记录。 动态查找表可以有不同的表示方法,在此只讨论树形结构表示的实现方法。 1972年,R.Bayer和E.M.McCreight提出了一种称为B树的平衡多路查找树,它适合在磁盘等直接存取设备上组织动态的查找,它在文件系统中很有用。 B树是一种平衡的多路查找树,一棵m阶的B树,或者为空,或者为满足下列特性的m叉树: 树中的每个结点至多有m棵子树; 若根结点不是叶结点,则至少有两棵子树; 除根结点外的所有非终端结点至少有 棵子树; 所有非终端结点包含以下信息:n, A0, K1, A1, K2, …, Kn, An。其中,Ki(i=1,2,…,n) 为键,且KiKi+1;Ai为指向子树根结点的指针(i=0,1,…,n),且Ai-1所指子树中所有结点的键均小于Ki, An所指子树中所有结点的键均大于Kn, ≤n≤m-1, n为键的个数; 所有的叶结点都出现在同一层上,且不带信息(可以看作是外结点或查找失败的结点,实际上指向这些结点的指针为空)。 B树的查找类似二叉排序树的查找,只不过B树的每个结点上是多键的有序表,在到达某个结点时,现在有序表中查找,若找到,则查找成功; 否则,按照对应的指针信息到指定的子树中进行查找,到到达叶结点时,则说明树中没有对应的键,查找失败。 在B树上的查找过程是顺指针查找结点和在结点中查找键交叉进行的过程: 设所有可能出现的键集合记为U(全集)。实际存储的键集为K,期中|K|比|U|小得多。 哈希方法是使用函数Hash,将U映射到表T[0..m-1]的下标上,即Hash函数的运算结果就是相应数据元素的存储地址,从而在O(1)时间内就可以完成查找: Hash称为

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档