线索索引查找

2018/07/18 16:31
阅读数 6

以下都是我阅读《大话数据结构》线索索引查找部分的总结。

 

使用索引的方式查找数据在生活中非常常见。
比如使用字典查找数据,我们需要查找,“博”这个字,
我们首先是翻到前面的目录页,根据拼音查找到"bo",得到对应的页面数,然后再把字典翻到对应的页面数,进行查找。

前面的拼音目录就是所谓的索引。

一、定义

索引是一个将关键字与它对应的记录相关联的过程,一个索引由若干个索引项组成,
每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息

线性索引就是将索引项集合组织为线性结构,也称为索引表。

 

二、几种线性索引

1、稠密索引

稠密索引就是指在线性索引中,将数据中每个记录对应一个索引项。也就是说索引项的数量和记录的数量相等。

稠密索引结构的索引表,索引项一定是按照关键字有序的排列。

稠密索引的优点很明显,因为索引项是按照关键字有序排列地,我们可以使用之前的有序表查找算法(折半、插值或者斐波那契)对索引项进行查找。
这样可以大大节约效率。

它的缺点也同样明显。如果记录数非常大,索引项的数量和记录数数量一样,这样导致索引项的查找数量也非常大。
对于内存有限的计算机来说,可能就需要反复去范围磁盘,查找的性能就会大打折扣。

 

2、分块索引

图书馆的图书分布就是分块的。文史类在A区,计算机类在C区,日常工具类在B区。

通过对数据集分块,使其分块有序,然后再去每块建立一个索引项,从而减少索引项的个数。

分块有序,是吧数据集的记录分成若干块,并且这些快需要满足两个条件:

  1.块内无序

  2.块间有序

分块索引的时间复杂度为O(√n)。比起顺序查找,效率还是高很多的。

 

3、倒排索引

有一天,我们看书学到柯西不等式,出于好奇,我们上网搜索“柯西”。下面是搜索结果。

 

 我们可以看到,每一个搜索项都含有我们输入的关键字“柯西”。换句话说“柯西”关键字后面挂靠了无数的记录。

我们假设存在一张这样的记录表,其中记录号存储具有相同次关键字的所有记录的记录号(可以指向记录的指针或者改记录的主关键字)。
这样的索引方法就是倒排索引。倒排索引中的每一项都具有一个属性值和具有该属性值的各记录的地址。

由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因此被称为倒排索引。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部