理论基础——查找与索引
查找与索引
Alex_McAvoy
想要成为渔夫的猎手
展开
-
理论基础 —— 查找
【概述】查找是在具相同类型的记录构成的集合中,找出满足给定条件的记录,给定的查找条件是多样的,为便于讨论,将查找条件限制为 “匹配”,即查找关键码等于给定值的记录。在查找中,常将数据元素称为记录,将可以标识一个记录的某个数据项称为关键码,关键码的值称为键值,若关键码可以唯一标识一个记录,则称其为主关键码,反之,称为次关键码。【查找分类】1.静态查找静态查找是指不涉及插入、删除操...原创 2019-06-04 17:25:51 · 482 阅读 · 0 评论 -
理论基础 —— 索引
【概述】当数据量不是很大时,查找技术足以满足需求,但对于计算机应用程序来说,其是以大型数据库为中心,并将大型数据库作为文件存放于外存中的,当需要进行查找操作时,查找技术的处理过于缓慢,因此有了索引技术。索引是为了加快查找速度而设计的一种数据结构,一个文件可能有多个相关的索引,每个索引往往只支持一个关键码,通过索引可以实现对文件中记录的快速访问,其常用于组织大型数据库以及磁盘文件。关于索...原创 2019-07-03 15:39:13 · 424 阅读 · 0 评论 -
理论基础 —— 查找 —— 二分查找
【概述】二分查找又称折半查找,其要求线性表中的记录必须按关键码有序,且必须采用顺序存储。其基本思想是:用给定值 k 先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据 k 与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或查找结束发现表中没有这样的结点。【实现】1.查找元素int BinarySearch(i...原创 2018-03-13 16:48:59 · 626 阅读 · 0 评论 -
理论基础 —— 查找 —— 顺序查找
【概述】顺序查找是最基本的查找技术之一,其基本思想是:从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值 k 相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k 的结点,表示查找失败。【复杂度分析】对于 n 个记录的顺序表,查找第 i 个记录时,需要进行 n-i+1 次关键码的比较。在查找成功时,有:设每个记录的查找概率相等,则有:故:...原创 2018-04-29 14:33:07 · 553 阅读 · 0 评论 -
理论基础 —— 查找 —— 斐波那契查找
【概述】斐波那契查找,其利用了黄金分割原理来对二分查找进行了改进。黄金分割又称黄金比例,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约为 1:0.618 或 1.618:1,黄金比例不仅在绘画、艺术上有着重要的审美价值,在工程上也具有极大的作用。在二分查找中,每次查找都是将查找表一分为二,无论数据是偏大还是偏小,很多时候都未...原创 2018-04-29 15:14:33 · 706 阅读 · 0 评论 -
理论基础 —— 查找 —— 插值查找
【概述】以查字典为例,在英文字典中查 "apple" 时,下意识的会翻开前面的书页,当查 "zoo" 时,下意识的翻开一定是后面的书页,显然,此时还绝对不是从中间开始查起,而且有一定目的地从前或从后查找。同样的,以取值范围在 1~10000 间的 100 个元素从小到大均匀分布的数组中查找 5,那么自然会考虑从数组下标较小的开始查找。可以看出,二分查找这种查找方式,并不是自适应的,因此...原创 2018-04-29 15:03:00 · 1242 阅读 · 0 评论 -
理论基础 —— 查找 —— 哈希查找
【概述】查找的理想情况是不经过任何比较,直接得出待查记录的存储位置,那么就需要在记录的存储位置与其关键码之间建立一个确定的对应关系 H,使得每个关键码 key 与唯一的存储位置 H(key) 相对应。在查找时,根据这个确定关系找到给定值 k 和映射 H(k) ,若查找集合中存在这个记录,则必定在 H(k) 的位置上,这种查找技术即哈希查找(Hash Search),又称散列查找。采用散...原创 2018-05-14 19:20:23 · 3390 阅读 · 0 评论 -
理论基础 —— 查找 —— 二叉排序树
【概述】二叉排序树(Binary Search Tree),又称二叉查找树,其本质是按一定的顺序进行构造的二叉树。其递归定义如下:若其左子树不空,则左子树上所有结点的值均小于根结点的值 若其右子树不空,则右子树上所有结点的值均大于根节点的值 其左右子树也是二叉排序树从上述定义可以看出,二叉排序树是记录之间满足一定次序的二叉树,中序遍历二叉排序树可以得到一个按关键码有序的序列。...原创 2019-06-27 21:15:59 · 506 阅读 · 0 评论 -
理论基础 —— 查找 —— 平衡二叉树
【概述】二叉排序树的查找效率取决于二叉排序树的形态,而构造一棵形态均匀的二叉排序树与结点的插入次序有关,但结点的插入次序不是随人的意志决定的,这就要求我们找到一种动态平衡的方法,对于任意给定的关键码序列都能构造一科形态均匀、平衡的二叉排序树。平衡二叉树(Balance Binary Tree)又称 AVL 树,其本质是一种高度平衡的二叉排序树,其或是一棵空的二叉排序树,或是满足以下性质的二...原创 2019-06-27 21:17:03 · 716 阅读 · 0 评论 -
理论基础 —— 索引 —— 分块索引
【概述】分块索引既适用于静态索引,又适用于动态索引。在稠密索引中,索引项的个数与文件记录个数相同,空间代价很大,为减少索引项的个数,可以对文件分块,使分块有序。分块有序,是指数据集的记录分为若干块,并且这些块满足两个条件:块间有序:后一块的所有记录的关键字要大于前一块的所有记录的关键字 块内无序:每一块的记录不要求有序在分块索引表中进行的查找称为分块查找,其分两步进行:在索...原创 2018-04-29 14:45:30 · 1193 阅读 · 0 评论 -
理论基础 —— 索引 —— 稠密索引
【概述】稠密索引适用于静态索引。在线性索引中,若文件中的每个记录对应一个索引项,则这种索引称为稠密索引。在稠密索引中,无论文件是否按关键码有序,索引项总是按关键码有序进行排列。【优缺点】只要内存空间允许,常常将稠密索引存储在内存中,从而提高查找速度。此外,在建立索引后,由于索引项有序,且每个索引项都包含了一个关键码以及指向该记录存储位置的指针,因此在对记录进行操作时,可...原创 2019-07-04 14:41:12 · 574 阅读 · 0 评论 -
理论基础 —— 索引 —— 倒排索引
【概述】倒排表是对次关键码的一种索引表,其索引项包括以下两个结构:次关键码:要记录的表项 记录号表:存储具有相同次关键字的所有记录的记录号,并且有序排列这种索引不是由记录来确定数据项,而是由数据项来确定记录的位置。【优缺点】倒排索引的优点在于查找记录的速度很快,有时不用读取记录即可得到结果,而且由于其并未对文件进行修改,使用和维护都比较简单。但由于倒排表中的记录号表长是...原创 2019-07-04 20:32:38 · 886 阅读 · 0 评论 -
理论基础 —— 索引 —— 2-3 树
【概述】2-3 树是一种多路查找树,其满足于以下性质:每个结点都具有两个孩子或三个孩子,具有两个孩子的结点称为 2 结点,具有三个孩子的结点称为 3 结点 2 结点包含一个元素和两个孩子,左子树包含元素小于根结点元素,右子树包含元素大于根结点元素 3 结点包含一大一小两个元素和三个孩子,左子树包含较小元素,右子树包含较大元素,中间子树包含介于两者之间的元素 所有的叶结点都在同一层...原创 2019-07-05 08:40:59 · 650 阅读 · 0 评论 -
理论基础 —— 索引 —— B 树、B+ 树与 B* 树
【B 树】B 树(B-Tree)也写作 B-树,其是一种平衡的多路查找树,主要面向于动态查找,常用于文件系统中。B 树中,结点最大的孩子数目称为 B 树的阶,2-3 树是 B 树的特例,其是 3 阶 B 树。B 树的查找、插入、删除操作与 2-3 树相似。一棵 m 阶的 B 树或为空树,或为满足以下性质的 m 叉树:所有的叶结点都出现在同一层,且不带信息 树中每个结点最多有...原创 2019-07-05 20:00:08 · 303 阅读 · 0 评论