数据结构_文件及查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件的存取方式与文件的物理结构有
关。采用不同的组织形式就得到不同的存 储结构。基本的组织有顺序组织、索引组 织和Hash组织。
9.2 顺序文件
顺序文件是指记录按其在文件中的逻 辑顺序依次存入存储介质而建立的,即顺 序文件中物理记录的顺序和逻辑记录的顺 序是一致的。若顺序文件中的记录按关键 字有序,则称此顺序文件为有序顺序文件, 否则称为无序顺序文件。
– ⑵ 冲突的处理。如何采取合适的处理冲突方法来解 决冲突。
• ① Hash函数。若Hash函数选择得当,就可使Hash地址尽 可能均匀地分布在Hash地址空间上,从而减少冲突的发生; 否则,若Hash函数选择不当,就可能使Hash地址集中于某 些区域,从而加大冲突的发生。 • ② 处理冲突的方法。选择适当的Hash函数可以减少冲突, 但不能避免冲突,因此当冲突发生时,必须有较好的处理冲 突的方法。 • ③ Hash表的装填因子。
索引表只需对每个块保存一个索引项,分别给出每一
块的最大关键字及该块的首地址。
这种索引称为非稠密索引 非稠密索引分块文件
9.3 索引文件
多级索引文件 1.二叉树排序树多级索引
2.多分树索引
9.4 B-树与B+树
• B树是一种平衡的多路查找树,它在数据处理中有着 巨大的作用,已经成为数据处理中主要的文件组织形 式。它以占用存储空间少,查找效率高的优势在数据 库系统的索引技术中占据了重要的地位。 • 定义 :一棵m阶的B树,或者为空树,或为满足下列 特性的m叉树。 • (1)对树中子树的要求: – 每个结点至多有m棵子树。 – 若根结点不是叶子结点,则至少有两棵子树。 – 除根结点之外的所有非终端结点至少有m/2 棵子 树。
外存的访问次数,寻道次数和寻道时间。
9.3 索引文件
稠密索引文件
索引对基本文件中的每个记录都保持一个索引项。
索引项按记录关键字值大小排序
9.3 索引文件
非稠密索引文件 将基本文件分成若干块,每一块内的记录不必排序, 但在块与快之间有序,即前一块中的所有记录的关键
字都小于后一块中所有记录的关键字。
• B—树的删除
9.4 B-树与B+树
• B+树是应文件系统所需而产生的一种B树的变 形树。一棵m阶的B+树和m阶的B树的差异在于:
– (1)在B树中,每个结点含n个关键字,n+1棵子树; 在B+树中,每个结点含n个关键字,n棵子树。 – (2)在B树中,每个结点中关键字个数n的取值范围 m/2 1≤n≤m1(除根)结点外。
– 散列只是通过记录的关键码定位该记录,没 有完整地表达记录之间的逻辑关系,所以, 散列主要是面向查找的存储结构。
– 散列既是一种查找技术,也是一种存储技术。
9.5 杂凑(Hash)文件
• 散列技术适合于哪种类型的查找?
– 散列技术一般不适用于允许多个记录有同样 关键码的情况。 – 散列方法也不适用于范围查找,换言之,在 散列表中,我们不可能找到最大或最小关键 码的记录,也不可能找到在某一范围内的记 录。
9.2 顺序文件
顺序文件在存储介质中可以有两种 不同的实现结构:连续结构和链结构。 连续结构是指逻辑上相邻的记录其存 储位置是相邻的,链结构是指物理记录之 间的次序由指针链来表示。这两种结构对 应的顺序文件分别称为连续顺序文件和链
接顺序文件。
9.2 顺序文件
上图为一个具有4个逻辑块的连续结构 文件,其逻辑块号0、1、2、3依次存放在物 理块15、16、17、18中。
9.2 顺序文件
• 排序顺序文件 •一般顺序文件
9.2 顺序文件
连续结构的优点是:
(1)结构简单; (2)顺序访问速度快,对于等长记录的连 续文件可以进行顺序存取,也可以进行类 似折半查找的随机存取,但是对于不等长
记录的连续文件只能进行顺序存取; (3)因为数据集中存放在连续的盘块中,
访问时所需的寻道次数和寻道时间少。
9.4 B-树与B+树
• 例1 在一棵3阶B树上依次插入关键字65、 24、50和38
9.4 B-树与B+树
• 例2 有下列关键字序列{20,54,69,84, 71,30,78,25,93,41,7,76,51, 66,68,53,3,79,35,12,15, 65},建立5阶B树
9.4 B-树与B+树
适用情况? 事先知道关键码,关键码集合不是很大且连续性较好。
9.5 杂凑(Hash)文件
9.5 杂凑(Hash)文件
• 散wk.baidu.com技术的关键问题:
– ⑴ 散列函数的设计。如何设计一个简单、 均匀、存储利用率高的散列函数。
• ① 所选函数尽可能简单,以便提高转换速度。 • ② 所选函数对关键字计算出的地址,应在Hash 地址集中大致均匀分布,以尽量减少冲突。
9.5 杂凑(Hash)文件
• 散列技术的关键问题:
第九章 文件及查找
提纲 9.1 文件概述 9.2 顺序文件 9.3 索引文件 9.4 B-树与B+树 9.5 杂凑(Hash)文件
9.1 文件概述
文件(File)是性质相同、逻辑上相关的 记录的集合。
按文件记录的类型不同可以将文件分为两类: 操作系统文件和数据库文件。操作系统文件是一维 的字符序列,无结构,无解释。数据库文件是带有 结构的记录集合。 数据库文件的每个记录由若干数据项构成。记 录是文件存取的基本单位,数据项是文件使用的最 小单位。数据项又称关键字项,关键字项的值称为 关键字(Key)。能惟一标识一个记录的关键字称为主 关键字,而其他的关键字称为次关键字。
9.4 B-树与B+树
• • • • B+树操作 (1)查找 (2)插入 (3)删除
9.5 杂凑(Hash)文件
• 查找操作要完成什么任务?
待查值k 确定k在存储结构中的位置
• 我们学过哪些查找技术?这些查找技术的 共性?
– 顺序查找、二叉排序树查找等。 – 以上讨论的查找方法,由于记录的存储位置与 关键字之间不存在确定的关系,因此查找时需 要进行一系列对关键字的查找比较,即“查找 算法”是建立在比较的基础上的,查找效率由 比较一次缩小的查找范围决定。
9.5 杂凑(Hash)文件
散列函数——直接定址法
散列函数是关键码的线性函数,即:
H(key) = a key + b (a,b为常数)
例:关键码集合为{10, 30, 50, 70, 80, 90},选取的散 列函数为H(key)=key/10,则散列表为:
0 1 10 2 3 30 4 5 50 6 7 8 9 70 80 90
9.4 B-树与B+树
• (2)对树中关键字个数的要求:
– 所有的非终端结点中包含以下信息(n,A0,K1,A1, K2,…,Kn,An)。 – 其中,n为关键字个数,m/2 1≤n≤m1;Ki(i=1,2,…,n) 为关键字,且Ki<Ki+1;Ai为指向子树根结点的指针 (i=0,1,…,n),且指针Ai-1所指子树中所有结点的关键字 值均小于Ki(i=1,2,…,n),An所指子树中所有结点的关键字 值均大于Kn。 • (3)对叶子结点的要求: – 所有的叶子结点都出现在同一层次上,并且不带信息(可以 看做是外部结点或查找失败的结点,实际上这些结点不存在, 指向这些结点的指针为空)。
存取第i个记录,必须搜索在它之前的i-1个记录。
9.2 顺序文件
链结构主要优点是:
(1)提高了磁盘空间利用率,解决了磁盘碎片问题; (2)便于文件的插入和删除操作; (3)便于文件的动态增长。 从本质上讲,顺序文件就是线性表,因而对顺序 文件的各种操作与线性表类似,但是,外存的访问速
度比主存要慢的多,在考虑算法时要立足于尽量减少
9.5 杂凑(Hash)文件
• 能否不用比较,通过关键码直接确定存 储位置?
– 理想的情况是,依据关键字直接得到其对应 的记录位置,即要求关键字与记录位置间存 在一一对应关系,通过这个关系,能很快地 由关键字得到对应的记录位置。
9.5 杂凑(Hash)文件
• 散列技术仅仅是一种查找技术吗?
• 散列是一种完整的存储结构吗?
9.1 文件概述
文件上的操作主要有两类:检索和维护。
文件检索就是在文件中查找满足条件的记录, 可以按记录的逻辑号查找,也可以按关键字查 找。 文件维护主要是指对文件进行记录的插入、
删除及修改等更新操作。
9.1 文件概述
文件的存储结构是指文件在物理存储介质 (磁盘、光盘、U盘)上的组织形式,它决定了 文件信息在存储设备上的存储位置。
• 在B+树中,每个结点中关键字个数n的取值范围m/2≤n≤m (除根结点外),1≤n≤m(根结点)。
– (3)B+树中所有叶子结点包含了全部关键字及指向 对应记录的指针,且所有叶子结点按关键字由小到大 顺序依次链接。 – (4)B+树中所有非叶子结点仅起索引作用,结点中 仅含有其子树中的最大(或最小)关键字。
找新的较大的空闲空间,并将原有数据移动到新空间
中,然后才能插入新的数据,因此,连续结构不易动 态增长,而且外存容易存在碎片。
9.2 顺序文件
上图为一个4个逻辑块的链结构文件的物理存储。
使用链结构时,只要指明该文件的第一个块号就可以
按链指针检索整个文件。链结构的另一个特点是文件 长度可以动态地增长,只要调整链指针就可插入或删 除一个信息块。 链结构文件适用于顺序存取,不便于进行直接存取,
9.2 顺序文件
连续结构存储的缺点:
(1)由于插入和删除记录会引起其它记录的移动,
在外存中执行此操作会引起磁头的频繁来回移动,因
此连续结构只能在文件的末尾插入记录,删除记录时,
只作标记进行逻辑删除,只有用户指定物理删除时才
真正删除相应记录,进行记录的移动;
9.2 顺序文件
(2)顺序文件需要连续的盘块存放数据,因此, 在插入记录时如果原来分配的盘块已没有空闲空间, 而与其邻接的盘块也不空闲时,需要重新在外存中查
9.4 B-树与B+树
• 例 一棵5阶的B树
9.4 B-树与B+树
• 例 一棵7阶的B树 • 在一棵7阶的B树中,树根结点的关键字 个数最少为1,最多为m1=6,子树个数 最少为2,最多为m=7; • 每个非树根结点的关键字个数最少为 「m/2 -1=「7/21=3,最多为m1=6, 子树个数最少为「m/2=「7/2=4,最多 为m=7。
9.4 B-树与B+树
• B+树定义
一个m阶B+树满足下列条件: (1)每个分支节点至多m棵子树 (2)出根结点外,其它每个分支结点至少有ceiling(m/2)棵 子树 (3)跟结点至少有两颗子树 (4) 有n棵子树的结点有n个关键字 (5)叶子结点中存放了数据文件的中记录的关键字及指向该 记录的指针,或存放数据文件分块后没块的最大关键字 及指向该块的指针,也结点关键字值按大小顺序链接。 (6)所有分支结点可以看成是索引的索引,结点中仅包含它 的各个子结点中最大(或最小)关键字及指向子结点的 指针
文件的操作是定义在逻辑结构上的,但操作的具体
实现要在存储结构上进行
9.1 文件概述
文件的逻辑结构是指文件的外部组织形式,是 用户对数据的表示和存取方式。
文件中各记录之间存在着逻辑关系,当一个 文件的各记录按照某种次序排列起来时,各记录 之间自然地形成了一种线性关系。文件中的各个 记录最多只有一个前驱记录和一个后继记录,而 文件的第一个记录只有后继记录没有前驱记录, 文件的最后一个记录只有前驱记录没有后继记录。 所以可以把文件看成是线性结构。
200801004
200801005
王新刚
张惠


18
19
9.1 文件概述
文件又可分为定长文件和不定长文件。
若文件中记录含有的信息长度相同,则称这类
记录为定长记录,由这种定长记录组成的文件称为
定长文件;若文件中记录含有的信息长度不等,则
称为不定长文件。
和其它数据结构一样,文件结构也包括逻辑结 构、存储结构以及文件上的各种操作这3个方面。
9.1 文件概述
• 文件的存储介质
– 磁带 – 磁盘 – 光盘 – 移动电子盘
9.1 文件概述
下面是一个简单的学生文件,每个学生的 情况是一个记录。每个记录由学号、姓名、性 别和年龄4个数据项组成。其中“学号”是主 关键字,“姓名”、“性别”等是次关键字。
学号 200801001 200801002 200801003 姓名 张小平 李立新 王鹏飞 性别 男 女 男 年龄 18 20 19
相关文档
最新文档