【白话文严蔚敏数据结构】索引文件

发布时间 2023-06-25 02:55:47作者: 小默同学

索引表的文件称为索引文件索引表的作用是将文件逻辑上的位置与在内存中的物理位置一一对应

\[索引文件\begin{cases}数据区\\索引表(纵向)\begin{cases}关键字\\物理位置\end{cases}\end{cases} \\ 查找文件记录的过程:关键字 \to 索引表 \to 物理位置(数据区) \]

索引表(横向)中的每一项称为索引项

索引表中物理位置不一定有序,关键字一定有序。物理位置和关键字都有序的称为顺序索引表,只有关键字有序物理位置无序的称为非顺序索引表

索引表的生成:索引表是系统自动生成的,首先输入的时候索引表是按输入顺序也就是物理位置顺序排列的输入结束后再按照关键字顺序再排序一次。

索引表的检索:先访问内存中的索引表,再访问外存中的数据。由于索引表的关键字一定有序,则可以使用折半查找。

索引表的修改:删除的时候只需要删除对应的索引项;增加的时候记录放在数据区的末尾,同时再索引表中添加索引项;修改的时候只需要将更新后的记录放在文件的末尾,同时更新索引项。

当索引表太大内存中一个物理块放不下时候:新增查找表,查找表中每一项对应多项的索引项,更大的话就多设几级查找表。

索引表的动态索引:索引表是顺序表的时叫静态索引,索引表是树表的时候叫动态索引。静态索引存取方便,但是插入删除修改时效率较低。动态索引分为二叉排序树,B-树以及键树。当索引表占的内存不大的时候用二叉排序树,当索引表占的内存大的时候用 m 叉排序树或者 B 树。当是特殊类型关键字的索引表的时候,内存不大的时候采用双链表键树,反之,则采用 Trie 树。

索引文件只能是磁盘文件。

一个索引项对应一个记录称为稠密索引,一个索引项对应多个记录称为稀疏索引。