数据结构---线性索引查找

引言

数据结构的最终目的是提高数据的处理速度,索引是为了加快查找所读而设计的一种数据机构。索引就是把一个关键字与它对应的记录相关联的过程一个索引由若干个索引项构成,每个索引项至少包含一个关键字和其对应的记录在存储器中的位置等信息。索引技术是组织大型数据库以及磁盘文件的一种重要技术。
索引按照结构可以分为线性索引、树形索引、多集索引。
线性索引就是将索引项集合组织为线性结构,也称为索引表。

稠密索引

稠密索引是指在线性表中,将数据集中的每个记录对应一个索引项。因此对于稠密索引这个索引表来说,索引项一定是按照关键有序的排列。当对象在外存中按添加的顺序而不是按关键码有序存放的时候必须采用稠密索引。

分块索引

分块有序,是将数据集的记录分成了若干块,并在这些块满足以下条件:

  • 块内无序
  • 块间有序:要求第二块的所有记录的关键字均要大于第一块中所有记录的关键字,以此类推

对于分块的数据集,将每块对应一个索引项,这种索引方法叫分块索引。
索引项结构

  • 最大关键码:存储每一块中的最大关键字,这样的好处是可以使得在它之后的下一块的最小关键字也能比这一块最大关键字要大
  • 块中记录个数:便于循环本块时使用
  • 指向块首数据元素的指针:便于开始对这一块中记录进行遍历

对索引顺序结构进行查找时,根据关键码先在索引中定位对象所在的数据子块,然后在子块中定位查找的对象。

倒排索引

主键索引能唯一地标识对象,也叫主索引。
主键只有一个,日常应用中也需要对其它熟悉列进行搜索,所有,除了主关键码外,也有必要把其它常用的搜索属性设定为次关键码,建立次索引表。
次索引列因为属性值不是唯一的,所以在次索引中,建立一个所有值的一个列表,对每个取值建立一个具有相同属性值的对象的存放有序或主键有序的顺序链表。
次索引中存放对象地址的指针可以用主键来表示,这样在非主键属性列查找中,可以先在次索引中查找到对象主键,然后在主键索引中找到对象的地址。

原文地址:https://www.cnblogs.com/lishanlei/p/10707798.html