数据结构C++版.ppt
《数据结构C++版.ppt》由会员分享,可在线阅读,更多相关《数据结构C++版.ppt(35页珍藏版)》请在优知文库上搜索。
1、 1. 基本概念 2. 线性索引 稠密索引 分块索引 多重表 倒排表 3. 树型索引 2-3树 B-树 B+树基本概念 在索引问题以及数据库中,常常将数据元素称为记录(record)。文件 文件(file)通常是指存储在外存上的记录集合。从操作系统的角度看,文件是无结构的连续字节序列,从数据库的角度看,文件是有结构的记录集合,每个记录可由若干个数据项组成。记录是文件中进行存取的基本单位,数据项是文件中可使用的最小单位。索引 索引(index)是把一个关键码与它对应的记录相关联的过程,一个索引属于某一个文件,它由若干索引项构成,每个索引项(index item)至少应包含关键码对应的记录在存储器
2、中的位置等信息。基本概念 索引并不需要重新排列记录在文件中的顺序,一个文件可能有多个相关的索引,每个索引往往支持一个关键码,并且通过该索引实现对文件中记录的快速访问。静态索引 静态索引(static index)是指索引结构在文件创建时生成。一旦生成就固定下来,只有当文件再组织时才允许改变。动态索引 动态索引(dynamic index)是指在文件创建时生成的索引结构。在文件执行插入、删除等操作时,索引结构本身也随之发生改变。基本概念树形索引 索引项组织为树结构,称其为树形索引。 对一些大型文件,索引本身可能也很大,可对索引再建立一个索引,这样就构成了多级索引。当某级索引很大时,也可能要驻留在
3、外存。线性索引 索引项组织为线性结构,则称其为线性索引或索引表。线性索引一、稠密索引 稠密索引主要适用于静态索引。 在线性索引中,若文件中的每个记录对应一个索引项,则这种索引称为稠密索引。在稠密索引中,无论文件是否按关键码有序,索引项总是按关键码顺序排列。 见P298 图8-1优点:对数据库记录有效查找和随机访问;缺点:查找过程中可能需要多次访问磁盘使查找的性能降低。一旦在文件中插入或删除了记录,就必须更新稠密索引。线性索引二、分块索引 分块索引既适用于静态索引,也适用于动态索引。 对文件分块使其分块有序。分块有序是指将文件划分为若干块,每一块内不要求有序,但第二块中所有记录的关键码均大于第一
4、块中所有记录关键码,第三块中所有记录的关键码均大于第二块中所有的关键码.依此类推。 对于分块有序的文件,每块只需对应一个索引项,这种索引方法叫做分块索引。每块对应一个索引项,各索引项按关键码有序排序,形成一个索引表。块内最大关键码块长 块首地址线性索引二、分块索引 在分块索引表中进行的查找称为分块查找(也称为索引顺序查找) 1、在索引表中确定待查关键码所在的块。 2、在相应块中查找待查关键码。 见P299 图8-3线性索引三、多重表 多重表(multiple list)是一种多索引结构,除了为文件建立一个主索引外,还为每个需要查找的次关键码建立一个索引,在文件中为建立索引的次关键码分别增设一个
5、指针域,用于将关键码相同的记录连接在一起,或将在同一块中的记录连接在一起(对分块索引) 见P300 图8-4线性索引四、倒排表倒排表(reverse list)是对次关键码建立一种索引表,在倒排表中,索引项包括次关键码的值和具有的各记录的地址。其中记录号表存储具有相同关键码值的所有记录的记录号,并且它们有序排列。 见P301 图8-5次关键码值记录号表 其中,记录号表存储具有相同次关键码值的所有记录的记录号,并且它们有序排列。索引不是由记录来确定属性(即数据项)值,而是由属性值来确定记录的位置,因而称为倒排表。树形索引 树形索引是一种树结构的索引,树中每个结点是一个索引项,一般应包含关键码及其
6、对应的记录地址,对树结构的查找一般也快于线性查找。 树形索引多用作动态索引结构,即树中结点可动态地增加或撤消,树形索引常采用链接存储结构实现。树形索引一、 2-3树 一颗2-3树(见P302图9-7)是具有下列特性的树。(1)一个结点包含一个或者两个关键码;(2)每个内部结点有2个子女(如果它包含一个关键码)或者3个子女(若它包含两个关键码),并因此得名2-3树;(3)所有叶子结点都在树的同一层。 2-3树最大的优点是它能够以相对较低的代价保持树高的平衡。树形索引一、 2-3树18 331223 3048101520 212445 4750 5231图9-7 一个2-3树的例子树形索引一、 2
7、-3树 2-3树还有一类似于二叉排序树的特征,对于每一个结点,左子树中所有结点的值都小于第一个关键码的值,而中间子树的值均大于第一个关键码的值,若有右子树的话那么中间子树中所有结点的值都小于第二个关键码的值,而右子树的值大于第二个关键码的值,一个高度为k的2-3树至少有2k-1个叶子结点,此时每个分支结点都有2个子女,形成一颗满二叉树的形状,一个高度为k的2-3树至多有3k-1个叶子结点,此时每个分支结点都有3个子女。 在2-3树中查找一个关键码的过程类似于在二叉排序树中查找。树形索引一、 2-3树 查找: 在2-3树中查找一个关键码的过程类似于在二叉排序树中的查找。查找从根结点开始,如果根结
8、点不包含被查找的关键码 k,那么查找就在可能包含关键码k的子树中继续进行。存储在根结点中的关键码确定哪一个子树是正确的子树。树形索引一、 2-3树 插入: 向一个2-3树中插入一个记录的过程类似于二叉排序树的插入,新记录也是插到相应的叶子结点中。插入过程如下: 首先要找到被插入记录应该插入的叶子结点。 如果这个叶子结点只包含一个记录,就可以把新记录直接填加到这个叶子结点中。 如果新记录要插入到叶子结点L中,而L已经包含了两个记录,那么就需要把L分成两个结点,这称为一次“分裂”。首先创建一个新结点L,L得到这三个记录的关键码中最小的一个,L 得到最大的一个,中间的关键码与一个树形索引指向L 的指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 C+