第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)      将网站页面链接加入链接线性表中。

小结:

线性索引是线性表和排序算法以及查找算法的一个组合应用。首先将索引项组织到线性表中,其次对索引表进行排序,最后对排序好的索引表进行查找得到数据记录。

稠密索引,分块索引和倒排索引是最基础三种索,有着各自的应用场合。

转载于:https://www.cnblogs.com/free-1122/p/11336102.html

数据--第49课 - 线性索引查找相关推荐

  1. 第5课 - 线性表的本质

    第5课 - 线性表的本质 数据结构是为了解决生活中的实际问题而存在的,那生活中与线性表相对应的例子有什么呢? 幼儿园中就有一个例子,在老师安排小朋友活动时,会将小朋友组织成下面的站队形式,这个就是线性 ...

  2. 视频教程-大数据分析师实战课-大数据

    大数据分析师实战课 任老师,Cloudera管理/开发/分析认证讲师,华为高级特聘讲师,新华三大学高级特聘讲师,中国大数据技术与应用联盟高级讲师,全国高校大数据联盟特聘讲师,中国移动高级讲师,前IBM ...

  3. 第49课 大大大(纯小数变整数) 《小学生C++趣味编程》

    /*第49课 大大大(纯小数变整数)--学会编程,未来你将拥有更多的机会与可能--试编一程序,输入一个纯小数,把它变成整数后输出. (设纯小数的小数位数不超过9)0.1 1 0.125 125 */ ...

  4. 当且仅当函数依赖a→b在r上成立_数据库第06章关系数据理习题课.ppt

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp数据结构与算法 数据库第06章关系数据理习题课.ppt36页 本 ...

  5. python逐笔输入数据_知到智慧树Python数据分析与数据可视化结课测验

    知到智慧树Python数据分析与数据可视化结课测验答案 更多相关问题 已知三角形三个顶点的坐标是A(-1,2,3),B(1,1,1),C(0,0,5),试证三角形ABC是直角三角形,并求角B-- Wh ...

  6. 大数据入门第一课 Hadoop基础知识与电商网站日志数据分析

    大数据入门第一课 Hadoop基础知识与电商网站日志数据分析 本课程从Hadoop核心技术入手,以电商项目为依托,带领你从0基础开始上手,逐步掌握大数据核心技术(如:HDFS.YARN.MapRedu ...

  7. 题目:以下数据结构中不属于线性数据结构的是()

    题目: 以下数据结构中不属于线性数据结构的是(C) A:线性表 B:队列 C:二叉树 D:栈 解释: 线性结构定义: 如果一个非空的数据结构满足下列两个条件:1.有且只有一个根节点:2.每一个节点最多 ...

  8. 数据的逻辑结构(线性结构、非线性结构;集合结构、树状结构、网状结构),数据的存储结构(顺序结构、链式结构、索引结构、散列结构)

    数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑关系(和实现无关). 分类1:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继. ...

  9. 大数据学习第一课:虚拟机安装配置

    本章主要内容 VirtualBox下安装CentOS7 Minimal版本 Minimal版本Centos7静态IP网络设置 ssh免密登录设置 我们现在身处数据时代,大数据和人工智能已经逐渐渗透到我 ...

  10. 大数据算法 chap-2 亚线性算法

    亚线性算法 2.1 亚线性算法的定义 2.2 水库抽样-空间亚线性算法 2.3 平面图直径-时间亚线性计算算法 2.4 全0数组判定-时间亚线性判定算法 2.1 亚线性算法的定义 亚线性:比线性消耗更 ...

最新文章

  1. 报名 | 清华大学大数据能力提升项目开始报名啦!(2021秋)
  2. JSON简介以及用法汇总
  3. java判断总共天数_Java判断两个日期相差天数的方法
  4. http-关于application/x-www-form-urlencoded等字符编码的解释说明
  5. 三心二意,助你好运?
  6. 专业学习频道,欢迎关注数锐学堂
  7. PythonPyqt5项目开发完成后如何使用pyinstaller打包——以Pycharm编辑器为例(目前为止最正确的版本,成功打包日期为2020.11.26)
  8. 【数据结构笔记24】单源最短路(迪克斯拉Dijkstra算法),多源最短路(弗洛伊德Floyd算法)
  9. MDK5 (Keil5)注册机破解
  10. 禁忌搜索算法(Tabu Search)
  11. 概率论 方差公式_概率论基本问题
  12. 中级网络工程师是什么?主要是考什么,有什么用?
  13. ARM GCC浮点相关总结
  14. 【安全攻防系列 入侵排查 篇】 Windows和 Linux入侵排查 的思路及其工具篇
  15. 3D打印肝模型抢救生命
  16. biti_rainy's blog
  17. GD32系列总结 - systick介绍及使用
  18. 高考状元杀死同学 自称跟马加爵的经历很像
  19. 爬虫爬取斗鱼小姐姐直播间的封面
  20. 社区交友源码/支持聊天私聊-礼物系统-直播系统-缘分匹配+搭建教程

热门文章

  1. centos7 mysql添加密码_centos-在Centos7上更改mysql根密码
  2. 计算机应用超期,电脑程序数字签名过期怎么办
  3. java web实训项目_通知 | Java、web大前端将在南京开课啦!
  4. python爬取数据库数据类型_python中从搭建Mysql平台到爬取数据一站式全部完成
  5. html中src中的url,HTML 中的 href\src\url
  6. Scala学习02——Scala类和对象
  7. mysql数据库导入视图表失败_一个mysqldump导出失败的案例分析
  8. java---数组常用的方法:
  9. html调用rpst 源码_parseHTML 函数源码解析(四) AST 基本形成
  10. java 字符串排序_Java控制台输入字符串及字符串比较