数据结构的最终目的是提高数据的处理速度,索引是为了加快查找速度而设计的一种数据结构。索引就是把一个关键字与它对应的记录相关联的过程。 一个索引由若干个索引项构成,每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息。
所谓线性索引就是将索引项集合组织为线性结构,线性索引又分为:稠密索引、分块索引和倒排索引等。
1.稠密索引
稠密索引是指在线性索引中,将数据集中的每个记录对应一个索引项。如下图所示:
对于稠密索引这个索引表来说,索引项一定是按关键码有序的排列。因此,在查找关键码时可以运用二分,插值等方法。
2.分块索引
稠密索引的索引项和数据集中的记录个数相同,所以空间代价很大。分块有序类似于图书馆中的图书分类。
分块有序是把数据集中的记录分成了若干块,这些块需要满足两个条件:
块内无序:即每一块内的记录不要求有序。
块间有序:例如,第二块所有记录的关键字均大于第一块中所有记录的关键字。
对于分块有序的数据集,将每块对应一个索引项。定义索引项结构分为三个数据项:
1.最大关键码
2.存储块中的记录个数
3.指向块首数据的指针
在分块索引中查找,就是分两步进行:
1.在分块索引表中查找关键字所在的块;
2.在子块内根据块首指针找到相应的块,由于块内无序,因此使用顺序查找。
分块查找广泛应用于数据库表查找中。
3.倒排索引
索引项的通用结构是:
1.次关键码
2.记录号表
其中记录号表存储具有相同次关键字的所有记录的记录号。