- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 索引与散列
一、复习要点
索引结构和散列结构是用于外部搜索的搜索结构。数据在外存的组织即文件结构,主要分顺序、直接存取(散列)和索引文件。在这些文件组织中使用的主要是索引和散列方法。
1、基本知识点
要求掌握静态索引结构,包括线性索引、倒排索引、静态索引树的搜索和构造方法。掌握动态索引结构,包括B树的搜索、插入、删除,通过关键码个数估算B树的高度的方法;B+树的搜索、插入与删除。掌握散列法,包括散列函数的构造、处理溢出的闭散列方法;处理溢出的开散列方法;散列表分析。
二、难点与重点
1、线性索引
? 密集索引、稀疏索引、索引表计算
? 基于属性查找建立倒排索引、单元式倒排表
2、动态搜索树
? 平衡的m路搜索树的定义、搜索算法
? B树的定义、B树与平衡的m路搜索树的关系
B树的插入(包括结点分裂)、删除(包括结点调整与合并)方法
? B树中结点个数与高度的关系
? B+树的定义、搜索、插入与删除的方法
3、散列表
散列函数的比较
装载因子 ? 与平均搜索长度的关系,平均搜索长度的关系
表长m、表中已有数据对象个数n和装载因子的关系
解决冲突的(闭散列)线性探查法的运用,平均探查次数的计算
线性探查法的删除问题、散列表类的设计中必须为各地址设置三个状态
线性探查法中的堆积聚集问题
解决冲突的(闭散列)双散列法的运用,平均探查次数计算
双散列法中再散列函数的设计要求与表长m互质,为此m设计为质数较宜
解决冲突的(闭散列)二次散列法的运用,平均探查次数计算
注意:二次散列法中装载因子?与表长m的设置
解决冲突的(开散列)开散列法的运用,平均探查次数计算
由平均探查次数计算装载因子?,再计算表大小的方法
三、教材中习题的解析
10-1 什么是静态索引结构?什么是动态索引结构?它们各有哪些优缺点?
【解答】
静态索引结构指这种索引结构在初始创建,数据装入时就已经定型,而且在整个系统运行期间,树的结构不发生变化,只是数据在更新。动态索引结构是指在整个系统运行期间,树的结构随数据的增删及时调整,以保持最佳的搜索效率。静态索引结构的优点是结构定型,建立方法简单,存取方便;缺点是不利于更新,插入或删除时效率低。动态索引结构的优点是在插入或删除时能够自动调整索引树结构,以保持最佳的搜索效率;缺点是实现算法复杂。
10-2 设有10000个记录对象, 通过分块划分为若干子表并建立索引, 那么为了提高搜索效率, 每一个子表的大小应设计为多大?
【解答】
每个子表的大小 s = ?n? = ?10000? = 100 个记录对象。
10-3如果一个磁盘页块大小为1024 (=1K) 字节,存储的每个记录对象需要占用16字节,其中关键码占4字节,其它数据占12字节。所有记录均已按关键码有序地存储在磁盘文件中,每个页块的第1个记录用于存放线性索引。另外在内存中开辟了256K字节的空间可用于存放线性索引。试问:
(1) 若将线性索引常驻内存,文件中最多可以存放多少个记录?(每个索引项8字节,其中关键码4字节,地址4字节)
(2) 如果使用二级索引,第二级索引占用1024字节(有128个索引项),这时文件中最多可以存放多少个记录?
【解答】
(1) 因为一个磁盘页块大小为1024字节,每个记录对象需要占用16字节,则每个页块可存放1024 / 16 = 64个记录,除第一个记录存储线性索引外,每个页块可存储63个记录对象。又因为在磁盘文件中所有记录对象按关键码有序存储,所以线性索引可以是稀疏索引,每一个索引项存放一个页块的最大关键码及该页块的地址。若线性索引常驻内存,那么它最多可存放256 * (1024 / 8 ) = 256 * 128 = 32768个索引项,文件中可存放 32768 * 63 = 2064384个记录对象。
(2) 由于第二级索引占用1024个字节,内存中还剩255K 字节用于第一级索引。第一级索引有255 * 128 = 32640个索引项,作为稀疏索引,每个索引项索引一个页块,则索引文件中可存放32640 * 63 = 2056320。
10-4 假设在数据库文件中的每一个记录是由占2个字节的整型数关键码和一个变长的数据字段组成。数据字段都是字符串。为了存放右面的那些记录,应如何组织线性索引?
【解答】
将所有字符串依加入的先后次序存放于一个连续的存储空间store中,这个空间也叫做“堆”,它是存放所有字符串的顺序文件。它有一个指针free,指示在堆store中当前可存放数据的开始地址。初始时free置为0,表示可从文件的0号位置开始存放。线性索引中每个索引项给出记录关键码,字符串在store中的起始地址和字符串的长度:
索引表ID 堆stor
您可能关注的文档
最近下载
- (完整word版)人教版四年级上册数学复习教案.doc VIP
- 煤矿安全操作规程(2023年).docx
- 工作相关肌肉骨骼疾患的工效学预防指南 第 4 部分 轨道交通设备制造作业.pdf VIP
- 园林景观工程施工计划.pdf
- OC IIS的定义(液晶玻璃的检验与不良判定).ppt VIP
- 2025届高考语文复习:文言文阅读+课件.pptx VIP
- 大班数学《坐船去探险》教案课件材料.doc VIP
- 工作相关肌肉骨骼疾患的工效学预防指南 第 6 部分 木质家具制造作业.pdf VIP
- 初中英语八年级上册首字母填空专项练习(共100题,附参考答案).doc
- 工作相关肌肉骨骼疾患的工效学预防指南 第 9 部分 公交车驾驶作业.pdf VIP
文档评论(0)