数据--第49课 - 线性索引查找
第49课 - 线性索引查找
1. 索引的概念
索引是把一个关键字与它对应的记录相关联的过程。索引由若干个索引项构成,每个索引项包括关键字和其对应记录的位置,索引技术是组织大型数据库以及磁盘文件的重要技术。
线性索引:将索引项组织成线性结构。
非线性索引:将索引项组织成树形结构或图形结构。
2. 线性索引
(1)稠密索引:将数据集中的每个记录都做成一个索引项后存入线性表中。
(2)稠密索引的基本思想
① 将数据记录的(关键码、地址)组织成索引表,并排序。
② 当需要通过某个关键字key的值进行查找时可以利用二分查找或者插值查找等算法对(关键码,地址)表进行查找。
③ 通过查找结果中的地址可以直接得到数据记录。
(3)稠密索引的特点
不需要对数据记录本身进行组织或者排序。
每一条数据记录对应索引表中的一个索引项。
(4)稠密索引的缺陷
当索引表不能完全放置于内存中时,查找效率将大打折扣。
(5)分块索引
分块索引的思想同样来源于生活中。
将数据集中的记录分成若干块。
块内无序:每一块中的记录可以是无序的.
块间有序:第n块中所有记录的关键字必须大于第n-1块中任一记录的关键字。
(6)分块索引的基本思想
以(最大关键码,块长,块指针)的方式组织索引表,并排序。
利用二分查找或者插值查找等在索引表中查找关键字所在块。
根据块首指针找到对应的块,并在块中查找数据记录。
(7)分块索引的特点
① 不需要为每个数据记录分配一个索引项。
② 块中的数据记录可以是杂乱的,只要能进行顺序查找即可。
③ 块间的数据记录必须是有序的,第n块中所有记录的关键字必须大于第n-1块中任一记录的关键字。
3. 倒排索引
倒排索引将非关键码组织成(非关键码,地址)索引表。
倒排索引的索引表结构类似稠密索引。
倒排索引与稠密索引的区别在于:倒排索引的每个索引项可以对应多个记录,倒排索引的索引项不会缩着数据记录的增加有明显的增加。
示例:
英文单词(次关键码) |
编号(地址) |
and |
0,1,4 |
android |
0,2,5 |
boy |
1,4,7 |
book |
0,1,4 |
but |
5,6 |
few |
3,5,7 |
friend |
0,7 |
good |
1,2,3,4 |
should |
5,7 |
倒排索引的应用—简单搜索引擎
(1) 网站管理员提交他们的网站链接。
(2) 以英文单词作为次关键码遍历网站中的页面。
(3) 将遍历产生的索引项加入索引表。
(4) 将索引表中的索引项按照次关键字进行排序。
(5) 将网站页面链接加入链接线性表中。
小结:
线性索引是线性表和排序算法以及查找算法的一个组合应用。首先将索引项组织到线性表中,其次对索引表进行排序,最后对排序好的索引表进行查找得到数据记录。
稠密索引,分块索引和倒排索引是最基础三种索,有着各自的应用场合。