- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构使用C语言描述(第2版)第11章文件和外排序
数据结构 第11章 文件和外排序 11.2 文件 11.2.1 文件的基本概念 文件是逻辑上相关的记录的集合。 通常一个文件的各个记录是按照某种次序排列起来的。可以按记录中关键字值的大小,也可以按各个记录存入文件的时间先后排列。这样各记录间自然形成一种线性关系,所以一般情况下,文件被看成是一种线性结构。 两种不同类型的文件:操作系统文件和数据库文件。 操作系统文件仅仅是一维的连续的字符序列,无结构无解释。它也可以看成是记录的集合,每个记录只是一个字符组。每组信息称为一个逻辑记录,且进行编号,以方便按记录号存取和处理 数据库文件是带有结构的记录的集合。这类记录本身是由一个或多个数据项组成,也称逻辑记录。 逻辑记录是从用户角度看到的记录, 由逻辑记录组成的文件称为逻辑文件。 11.2.2 文件的组织方式 2. 散列文件 4. 倒排文件 11.3 文件的索引结构 11.3.1 静态索引结构 静态索引结构 多级索引形成一种静态的m叉搜索树结构。 当数据文件很大时,索引表本身也很大,可以建立多级索引:2级索引,3级索引,…。这种多级索引形成一种静态的m叉搜索树结构。 显然静态的多叉树索引结构不利于记录的频繁插入和删除。 前面提到的ISAM文件正是这种静态索引结构的一个例子。这种方法是解决需要频繁更新的大型数据库的一个早期尝试。 11.3.2 动态索引结构 B+树与B-树的最显著的区别是B+树只在叶结点中存储记录。非叶结点存储索引项。每个索引项为:(关键字值,指向子树的指针),叶结点存储实际记录。叶结点中可能存储多于或少于m个记录,只是简单地要求叶结点的磁盘块存储足够的记录,以保持该块至少半满,B+树的叶结点组成数据文件。 1. B+树 一棵m阶B+树或者是空树,或者是满足下列特性的树: 每个非叶结点最多有m个孩子; 除根结点以外的非叶结点至少有?m/2?个孩子; 有k个孩子的非叶结点必须有k个关键字值; 根结点至少有两个孩子; 所有叶结点均在同一层上。 每个B+树结点的结构如下: N,(P0,K0),(P1,K1),…,(Pn-1,Kn-1) 其中,Pi是指向子树的指针,Ki是子树Pi上的最大关键字值,KiKi+1 0?inm。 11.4 外排序 11.4.1 外排序的基本过程 在外存上进行排序的最通常的方法是合并排序。这种方法由两个相对独立的阶段组成:预处理和合并排序。即首先根据内存的大小,将有n个记录的磁盘文件分批读入内存,采用有效的排序方法进行排序,将其预处理为若干个有序的子文件。 这些有序子文件被称为初始游程或顺串。然后采用合并的方法将这些初始游程逐趟合并成一个有序文件。 11.4 多路合并 对第一阶段的预处理所产生一组初始游程(即有序子序列),可以使用合并的方法将它们合并成一个有序序列。将一组有序子文件合并成一个有序文件可以采用两路合并,也可以采用多路合并的方式进行。 11.4.4 最佳合并树 11.4.2 初始游程的生成 建立初始堆 从输入文件中输入p个记录,建立大小为p的堆。 为第一个初始游程选择一个适当的磁盘文件作为输出文件。 置换选择 内存中会同时存在两个堆:当前堆和新堆。 输出当前堆的堆顶记录到选定的输出文件。 从输入文件中输入下一个记录。 (1)若该记录的关键字值不小于刚输出的关键字值,则由它取代堆顶记录,并调整当前堆。 (2)若该记录的关键字值小于刚输出的关键字值,则由当前堆的堆底记录取代堆顶记录,并调整之,当前堆的体积减少。新输入的记录将存放在当前堆的原堆底记录的位置上,成为新堆的一个记录。这时,如果新堆的记录个数超过?p/2?时,应着手调整新堆;如果新堆中已有p个记录,表示当前堆已输出完毕,当前的初始游程结束,应当开始创建下一个初始游程,因此必须另为新堆选择一个磁盘文件作为输出文件。 (3)重复(2),直到输入文件输入完毕。 输出剩余记录 输出当前堆中的剩余记录,并边输出边调整。 将内存中的新堆作为最后一个初始游程输出。 ?得到如下三个初始游程 61, 87, 170, 275, 503, 509, 512, 523, 908, 154, 289, 329, 426, 456,500 77, 135,266 Data Structures in C++ 11.2 文件 11.3 文件的索引结构 11.4 外排序 文件是存在外存储器上的。为了有效分配外存空间,多个扇区通常形成簇或块。簇(块)是文件的最小分配单位,它们的大小由操作系统决定。 文件存储器上的文件称为物理文件,一簇或块(物理块)中的信息称为物理记录 用户读/写的记录是
您可能关注的文档
- 投资公司英文提案CHT27.ppt
- 投资公司英文提案CHT17.ppt
- 投资部战略规划研究(内部讨论稿).doc
- 投资:酒店式公寓投资人士必备的“宝典”.doc
- 抚州长宏实业项目策划方案.ppt
- 抢救抗战历史.doc
- 报关实务 第2章 报关与对外贸易管制.ppt
- 抢占先机,决胜网络媒体.ppt
- 抚州兰亭物业.ppt
- 报关实务 第7章 国际贸易实务.ppt
- 数据结构案例教程(c语言版) 第3章 串、数组和广义表.ppt
- 数据结构案例教程(c语言版) 第6章 查找.ppt
- 数据结构实例教程 第1章 数据结构概述.ppt
- 数据结构案例教程(c语言版) 第7章 排序.ppt
- 数据结构案例教程(c语言版) 第4章 树和二叉树.ppt
- 数据结构案例教程(c语言版)第1章 线性表.ppt
- 数据结构案例教程(c语言版)第8章 综合实训.ppt
- 数据通信原理及应用教程与实训 第2章 数据通信基础.ppt
- 数控技术专业英语 Unit6 Part Programming.ppt
- 数控技术专业英语 Unit7 Computer-aided Part Programming.ppt
最近下载
- 南京市鼓楼区2023~2024五年级数学上册期末试卷及答案.pdf VIP
- 2023年武汉轻工大学数据科学与大数据技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- DBJ51_014-2021 四川省建筑地基基础检测技术规程.pdf VIP
- 2023年武汉轻工大学网络工程专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 2024年清华大学五道口联合培养金融博士考博经验、考博真题、参考书单.docx VIP
- 2023年武汉轻工大学网络工程专业《计算机组成原理》科目期末试卷B(有答案).docx VIP
- 2022年武汉轻工大学网络工程专业《计算机组成原理》科目期末试卷B(有答案).docx VIP
- 螺旋输送机 标准 JB∕T 7679-2019.pdf VIP
- 线性代数(大连理工大学)线性代数与解析几何期中试卷(201304A).doc VIP
- 2024-2025学年深圳市南山区五上数学期末试卷及答案.docx VIP
原创力文档


文档评论(0)