程序设计与数据结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i
确定记录在该 物理块中的成 员资格 的二进 制位串的位数
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
8
• 查找操作
查找关键字为K的记录,先计算出H(K),取出这一 二进制位串的前i位(设为k〞),并找到序号为k〞的 存储桶目录项。根据此目录项的指针找到物理块B。
• 插入操作
为了插入关键字为K的记录,先其所在的物理 块,若该物理块中有空闲空间,我们就把新记 录存入,插入操作完成。如果B中没有空闲空 间,那么根据数字i的不同有两种可能:
12
§ 5 索引顺序文件
一、ISAM
• 专为磁盘存取设计的文件组织方式,是一种静态索引结构。 • ISAM采用多级索引:主索引、柱面索引、磁道索引。
• 注意,分裂B可能解决不了问题,因为有可能块B中所有记 录将分配到由B分裂成的两个存储块的其中一块中。如果 这样,我们需要对仍太满的块用下一个更大的j值重复上述 操作。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
10
再插入关键字值为1000的记录
插入关键字为0000、 0111的记录
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
11
§ 4 索引文件
• 索引文件的结构
索引区
文件名
查找
索引表 关键字 地址
记录1 记录2
…
…
记录N
①
块 块
…
块
②
数据区
稠密索引:每个数据记 录,在索引表里都有一 个索引项
• 二级索引、多级索引
稀疏索引:每一组 数据记录仅有一索
引项
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
K<Li时,执行high = i-1;
(3)查找失败,算法结束。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
6
§ 3 直接文件(散列文件)
直接文件:记录在介质上的位置是通过对记录的键施加变 换而获得相应地址。
一、桶散列 (静态散列) 基本思想:
把文件的记录通过散列函数H分别存储在许多存储桶中,每个存 储桶包含一个或多个物理块,一个存储桶中的物理块用指针连 接形成链表,每个物理块存放若干记录。如果一个桶溢出,即 它容纳不下所有属于它的记录,那么可以给该存储桶增加一个 溢出块链表以存放更多的记录。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
3
二、文件的逻辑结构
• 文件的逻辑结构是用户能观察到的,可加以处 理的数据集合。
• 文件的逻辑结构分两种形式:一种是流式文件,
另一种是记录式文件。
记录式文件是指若干逻辑记录
流式文件指文件内的数据
(按信息在逻辑上的独立含意划 不再组织成记录,只是连
分的一个信息单位)的集合。
续的字符序列。
• 记录冲区
逻辑记录
逻辑记录1 逻辑记录2 逻辑记录3
物理记录
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
4
三、 文件的物理结构
构造文件物理结构的方法:计算法和指针法。
实现原理是设计映射算法,通过对 记录关键字的计算转换成对应的物 理块地址,从而找到所需记录。
– 如果j=i,那么我们必须先将i加1,使存储桶目录项
个数增加一倍,即2i+1。在新存储桶目录表中,序 号为k〞0和k〞1(分别用0和1扩展k〞)的项都指 向原k〞目录项指向的物理块。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
9
• 插入操作
– 如果j<i(j的值可在每个物理块的“小凸块”中找 到),那么不必对存储桶目录表做任何变化。按下 面规则操作:
操作:以i=H(key) 为依据完成查找、插入、删除、更新等 操作。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
7
§ 3 直接文件(散列文件)
二、 可扩展散列(动态散列文件)
• 可散列文件的组织方式:散列函数H把关键字key转换成一个定长 的二进制位串k′(伪关键字),取k′前i位二进制数(设为k〞)作 为存储桶目录表中的目录项号,即表示目录表中第k〞个目录项, 目录项中的指针指向的物理块就是具有关键字key的记录所在的物 理块;存储桶目录项的个数为2i。
• (a)将物理块B分裂成两个存储块。
• (b)根据记录关键字的散列值的第j+1位,将B中的记录 分配到这两个存储块中,该位为0的记录继续保留在B中, 而该位为1的记录放入到新块中。
• (c)把j+1存储到两个存储块的“小凸块”中,以标明用 于确定成员资格的二进制位数。
• (d)调整存储桶目录项中指针,使原来指向块B的指针项 指向块B或新块,这由记录关键字的散列值的第j+1位决定。
Hi:第i个物理块内的记录的最大关键字
(2)反复执行下面操作,直到high<low成立
((ba))读i =取第lowi个 物KKh 理KKl块l (,high获 l得ow)L i和Hi
(c)分下面三种情况执行
Li≤K≤Hi时,查找成功,第i个物理块即为所求;
K>Hi时,执行low = i+1;
数据结构
第8章 文件
山东大学管理学院
本章内容
• 文件概述 • 顺序文件 • 直接文件 • 索引文件倒排文件
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
2
§ 1 文件概述
一、 文件的概念 • 域(Field)是数据的基本单位,又称为字段或数据项。
域通常用于描述数据对象的属性,不可分割的域含有 一个简单的值。 • 记录(Record)是一组相关域的集合,它可以看作是 应用程序的一个单元。根据设计的不同,记录可以是 固定长或可变长。如果记录中某些域的长度是可变的, 则该记录就是可变长度的记录。 • 文件(File)是由大量性质相同的记录组成的集合,它 被应用程序看作是一个实体。文件有一个惟一的名字, 可以被创建或删除。 • 数据库(Database)是一组相关的数据,它的本质特 征是数据单元间存在明确的关系,并且设计成可供许 多不同的应用程序使用。数据库自身是由一种或多种 不同类型的文件组成。
置专门指针,指明相应记 录的物理地址或表达各记 录之间的关联。
四、文件的操作
• 记录检索 • 记录插入 • 记录删除 • 记录更新 • 文件排序
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
5
§ 2 顺序文件
• 分块块插值查找 算法:
(1)初始化 low = 1;high=N。
low:查找范围内的最小物理块号; high: 查找范围内的最大物理块号; Li:第i个物理块内的记录的最小关键字;
确定记录在该 物理块中的成 员资格 的二进 制位串的位数
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
8
• 查找操作
查找关键字为K的记录,先计算出H(K),取出这一 二进制位串的前i位(设为k〞),并找到序号为k〞的 存储桶目录项。根据此目录项的指针找到物理块B。
• 插入操作
为了插入关键字为K的记录,先其所在的物理 块,若该物理块中有空闲空间,我们就把新记 录存入,插入操作完成。如果B中没有空闲空 间,那么根据数字i的不同有两种可能:
12
§ 5 索引顺序文件
一、ISAM
• 专为磁盘存取设计的文件组织方式,是一种静态索引结构。 • ISAM采用多级索引:主索引、柱面索引、磁道索引。
• 注意,分裂B可能解决不了问题,因为有可能块B中所有记 录将分配到由B分裂成的两个存储块的其中一块中。如果 这样,我们需要对仍太满的块用下一个更大的j值重复上述 操作。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
10
再插入关键字值为1000的记录
插入关键字为0000、 0111的记录
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
11
§ 4 索引文件
• 索引文件的结构
索引区
文件名
查找
索引表 关键字 地址
记录1 记录2
…
…
记录N
①
块 块
…
块
②
数据区
稠密索引:每个数据记 录,在索引表里都有一 个索引项
• 二级索引、多级索引
稀疏索引:每一组 数据记录仅有一索
引项
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
K<Li时,执行high = i-1;
(3)查找失败,算法结束。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
6
§ 3 直接文件(散列文件)
直接文件:记录在介质上的位置是通过对记录的键施加变 换而获得相应地址。
一、桶散列 (静态散列) 基本思想:
把文件的记录通过散列函数H分别存储在许多存储桶中,每个存 储桶包含一个或多个物理块,一个存储桶中的物理块用指针连 接形成链表,每个物理块存放若干记录。如果一个桶溢出,即 它容纳不下所有属于它的记录,那么可以给该存储桶增加一个 溢出块链表以存放更多的记录。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
3
二、文件的逻辑结构
• 文件的逻辑结构是用户能观察到的,可加以处 理的数据集合。
• 文件的逻辑结构分两种形式:一种是流式文件,
另一种是记录式文件。
记录式文件是指若干逻辑记录
流式文件指文件内的数据
(按信息在逻辑上的独立含意划 不再组织成记录,只是连
分的一个信息单位)的集合。
续的字符序列。
• 记录冲区
逻辑记录
逻辑记录1 逻辑记录2 逻辑记录3
物理记录
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
4
三、 文件的物理结构
构造文件物理结构的方法:计算法和指针法。
实现原理是设计映射算法,通过对 记录关键字的计算转换成对应的物 理块地址,从而找到所需记录。
– 如果j=i,那么我们必须先将i加1,使存储桶目录项
个数增加一倍,即2i+1。在新存储桶目录表中,序 号为k〞0和k〞1(分别用0和1扩展k〞)的项都指 向原k〞目录项指向的物理块。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
9
• 插入操作
– 如果j<i(j的值可在每个物理块的“小凸块”中找 到),那么不必对存储桶目录表做任何变化。按下 面规则操作:
操作:以i=H(key) 为依据完成查找、插入、删除、更新等 操作。
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
7
§ 3 直接文件(散列文件)
二、 可扩展散列(动态散列文件)
• 可散列文件的组织方式:散列函数H把关键字key转换成一个定长 的二进制位串k′(伪关键字),取k′前i位二进制数(设为k〞)作 为存储桶目录表中的目录项号,即表示目录表中第k〞个目录项, 目录项中的指针指向的物理块就是具有关键字key的记录所在的物 理块;存储桶目录项的个数为2i。
• (a)将物理块B分裂成两个存储块。
• (b)根据记录关键字的散列值的第j+1位,将B中的记录 分配到这两个存储块中,该位为0的记录继续保留在B中, 而该位为1的记录放入到新块中。
• (c)把j+1存储到两个存储块的“小凸块”中,以标明用 于确定成员资格的二进制位数。
• (d)调整存储桶目录项中指针,使原来指向块B的指针项 指向块B或新块,这由记录关键字的散列值的第j+1位决定。
Hi:第i个物理块内的记录的最大关键字
(2)反复执行下面操作,直到high<low成立
((ba))读i =取第lowi个 物KKh 理KKl块l (,high获 l得ow)L i和Hi
(c)分下面三种情况执行
Li≤K≤Hi时,查找成功,第i个物理块即为所求;
K>Hi时,执行low = i+1;
数据结构
第8章 文件
山东大学管理学院
本章内容
• 文件概述 • 顺序文件 • 直接文件 • 索引文件倒排文件
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
2
§ 1 文件概述
一、 文件的概念 • 域(Field)是数据的基本单位,又称为字段或数据项。
域通常用于描述数据对象的属性,不可分割的域含有 一个简单的值。 • 记录(Record)是一组相关域的集合,它可以看作是 应用程序的一个单元。根据设计的不同,记录可以是 固定长或可变长。如果记录中某些域的长度是可变的, 则该记录就是可变长度的记录。 • 文件(File)是由大量性质相同的记录组成的集合,它 被应用程序看作是一个实体。文件有一个惟一的名字, 可以被创建或删除。 • 数据库(Database)是一组相关的数据,它的本质特 征是数据单元间存在明确的关系,并且设计成可供许 多不同的应用程序使用。数据库自身是由一种或多种 不同类型的文件组成。
置专门指针,指明相应记 录的物理地址或表达各记 录之间的关联。
四、文件的操作
• 记录检索 • 记录插入 • 记录删除 • 记录更新 • 文件排序
2019/6/5
山东大学管理学院 戚桂杰 姚云鸿
5
§ 2 顺序文件
• 分块块插值查找 算法:
(1)初始化 low = 1;high=N。
low:查找范围内的最小物理块号; high: 查找范围内的最大物理块号; Li:第i个物理块内的记录的最小关键字;