数据结构 -文件概况
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.4 索 引 文 件
9.4.1 索引顺序文件 将主文件分成若干块,然后把每块中最大关键 字和该块的起始地址组成一个索引项。在把所 有索引项按关键字升序排列组成索引表。索引 表本身也可看成是主文件,可再建立高一级的 索引表,以提高查找效率。如果需要,还可以 建立高一级的索引表。各级索引表和主文件一 起构成索引顺序文件。
第9章 文件
9.1文件的基本概念 文件:逻辑上相关的记录的集合。 数据项:文件中最基本的有名字的数据单位, 如 记录:关于一个实体的相关数据项的总和。 记录的逻辑结构是指记录在用户或应用程序员 面前呈现的方式,是用户对数据的表示和存储 方式。
文件就是性质相同、逻辑相关的记录的集合。一 个文件包含的记录是同格式等长度的,也有不同格式 或不等长度的记录。文件的操作有检索和更新两类。
检索有下列三种方式。 (1)顺序检索:按记录的相对位置检索下一个逻辑记录。 (2)按记录序号检索:根据记录存入文件时的顺序编号, 检索第i个逻辑记录。 (3)按关键字检索:给定一个值,检索关键字与给定值 相关的一个或多个逻辑记录。 更新包括插入、删除和修改一个记录。
文件的操作可以有实时和批量两种不同的方式。通 常实时处理对应答时间要求严格,应在接收询问后 立刻完成相应的操作,而批量处理对时间要求不是 很严格,可以根据需要,对积累一段时间的记录进 行成批处理。
9.4.2 索引无序文件
为了加快查找速度,可以把每个记录的关键 字及记录的开始地址构造索引项,再把所有 的索引项按关键字升序排列并将其视为顺序 文件,按索引顺序文件方法对它建立各级索 引,构造索引无序文件。 索引无序文件不适合于顺序存取。
9.4.2 索引无序文件
索引表本身可用多种方法进行组织 多级索引 散列索引 B—树索引
文件组织方式
顺序文件 散列文件 索引文件 倒排文件
9.2顺 序 文 件
顺序文件:记录按建立该文件时的先后次序 依次存放在外存储器上的,即顺序文件中物 理记录的顺序和逻辑记录的顺序是一致的。
顺序文件的特点
(1)存取第i个记录必须先搜索在它之前的i—1个 记录。 (2)插入新的记录时只能加在文件的末尾。 (3)若要修改文件中的某个记录,则必须将整个 文件复制。
倒排文件示例
地 址 1 2 3 4 5 6 7 8 9 10 工作证号 102 103 211 217 314 318 320 323 324 329 姓名 孙丽 陈好 张力 李明 赵喜 林智江 周喜红 赵林 宋宁 吴双 女 女 男 男 男 男 女 男 女 女 性别 30 56 46 52 32 24 49 54 48 59 年龄 职称 讲师 教授 副教授 教授 讲师 助教 副教授 副教授 副教授 教授 系别 计算机 计算机 机械工程 机械工程 建筑工程 建筑工程 建筑工程 经管 经管 经管
B+树上插入
BT 17 30 47
6
11
17
30
39
47
ST
4
6
8
11
14
17
20 30
35
39
43
47
插入8后的3阶B+树
B+树上删除
BT 17 47
11
17
30
47
ST
4
6
11
14
17
20
30
39
43
47
删除关键字35后的3阶B+树
9.5 倒 排 文 件
“倒排”的意思是它不像一般文件那样先找 记录,再看记录的域值,而是根据给定域 (次关键字)值去找记录。 可对主文件的不同次关键字分别建立倒排表, 我们把主文件及其所有倒排表合称为倒排文 件。
9.3 散 列 文 件
散列文件:指利用散列方法组织的文件。 它本质上是一个存放在外存上的散列表。 选择合适的散列函数和处理冲突的方法将记录 散列到外存储器上
散列文件的特点
优点: 存取速度通常比索引文件更快; 插入、删除方便; 不需要索引区。
散列文件的特点
缺点: 空间利用率低; 无法进行顺序查找,只能进行随机查找; 询问方式也只有简单询问; 当多次进行插入、删除之后,也可能造成基本 桶内多数记录被删,而溢出桶中尚存记录,此 时亦需重组文件。
B—树中插入
(a)在一棵三阶B-树插入85后
B—树中插入
BT
45
24 30
53 70 90
3 12
26
37
50
61
85
100
(b)把含85的结点进行分裂
B—树中插入
(c)把含70的结点进行分裂后的B-树点进行分裂
B—树中删除
ห้องสมุดไป่ตู้
45 85
24
30
53
90
3
12
26
37
50
61
70
100
( a )在一棵 3 阶 B-树上删除 70 , 70 与 85 交换
B—树中删除
BT 45 85
24
30
53
3
12
26
37
50
61
90
100
( b )把删除 70 后的结点与含 100 的兄弟结点及 90 合并
B—树中删除
BT 45
24 30
53
85
3 12
26
37
50
61
90 100
( c)把原 90 所在的结点与含 53 的兄弟结点及 85 合并后的 3 阶 B树
9.4.3 B-树
B—树:一种平衡的多路查找树。 一棵m阶的B—树或为空树,或为满足以下条 件的树。
(1)树中每个结点至多有m棵子树。 (2)根结点或为叶结点,或至少有两棵子树。 (3)除根结点外,所有结点(不包括失败结点)至少含有 棵子树。 (4)所有的失败结点都在同一层上。 (5)非失败结点包含如下信息:(n,P0,K1,P1,K2,P2,…, Kn,Pn),其中n(n≤m 1)为结点含关键字的个数;Ki为(i=1,…, n)关键字,且Ki<Ki+1(i=1,…,n 1);Pi(i=0,…,n)为指向子 树根结点的指针,且指针Pi 1所指子树中所有结点的关键字均小于 Ki(i=1,…,n),Pn所指子树中所有结点的关键字均大于Kn。
9.4.4 B+树
一棵m阶B+树可以定义如下。
(1)每个结点至多有m棵子树。 (2)除根结点外,其他分支结点至少有[m/2]棵子树。 (3)非叶子结点的根结点至少有两棵子树。 (4)有n棵子树的结点有n个关键字,叶子结点中至少含有[m/2]个 关键字。 (5)叶子结点都在同一层上,其中存放数据文件中记录的关键字及指 向该记录存放地址的指针,或存放数据文件分块后每块最大关键字及 指向该块的指针,叶结点按关键字从小到大顺序链接。 (6)所有分支结点可看成是索引的索引。结点中仅包含它的各子结点 中最大(或最小)关键字的分界值及指向各子结点的指针。