本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对数据结构知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
关于对 查找
章节知识点总结的十分全面,涵括了《王道数据结构》课程里的全部要点(本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研数据结构“查找”章节知识点的正确性与全面性;
但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料。
数据结构与算法
笔记导航
- 第一章 绪论
(无)
- 第二章 线性表
- 第三章 栈和队列
- 第四章 串-KMP(看毛片算法)
- 第五章 树和二叉树
- 第六章 图
- 第七章 查找(B树、散列表)
⇦当前位置
- 第八章 排序 (内部排序:八大排序动图演示与实现 + 外部排序)
-
数据结构与算法 复试精简笔记 (未完成)
- 408 全套初复试笔记汇总 传送门
如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞 、求收藏 、求关注!
你必考上研究生!
我说的,耶稣来了也拦不住!
精准控时:
如果不实际操作代码,只是粗略过一下知识点,需花费 50 分钟左右过一遍
这个50分钟是我在后期冲刺复习多次尝试的时间,可以让我很好的在后期时间紧张的阶段下,合理分配复习时间;
但是刚开始看这份博客的读者也许会因为知识点陌生、笔记结构不太了解,花费许多时间,这都是正常的。
重点!!!学习一定要多总结多复习!重复、重复、再重复!!!
食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
所以再第二遍复习中,我给每一张截图中标记了重点,以及每张图片上方总结了该图片对应的知识点以及自己的思考。
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。
第7章 查找
文章目录
- 第7章 查找
-
- 7.1 查找的基本概念
-
- 1、查找
- 2、查找表
- 3、关键字
- 4、静态查找表
- 5、平均查找长度
- 7.1 查找的基本概念小结
- 7.2 顺序查找和折半查找
-
- 7.2.1 顺序查找
-
- 7.2.1 顺序查找小结
- 7.2.2 折半查找
-
- 1、算法思想
- 2、具体实现
- 3、查找效率分析
- 4、折半查找判定树
- 5、拓展思考
- 7.2.2 折半查找小结
- 7.2.3 分块查找
-
- 7.2.3 分块查找小结
- 7.3 B树和B+树
-
- 7.3.1 B树及其基本操作
-
- 7.3.1 B树的基本概念小结
-
- 7.3.1 B树的基本操作小结
- 7.3.2 B+树的基本概念
-
- 1、B+树满足的条件
- 2、B+树的查找
- 3、B+树 VS B树
- 7.3.2 B+树的小结
- 7.4 散列表
-
- 7.4.1 散列表的基本概念
-
- 7.4.2 散列函数
-
- 1、除留余数法
- 2、直接定址法
- 3、数字分析法
- 4、平方取中法
- 7.4.3 处理冲突的方法
-
- 7.4.3 处理冲突的方法小结
- 拉链法的小优化
7.1 查找的基本概念
1、查找
2、查找表
3、关键字
4、静态查找表
5、平均查找长度
7.1 查找的基本概念小结
7.2 顺序查找和折半查找
7.2.1 顺序查找
1、算法思想
2、具体实现
3、优化
7.2.1 顺序查找小结
7.2.2 折半查找
1、算法思想
2、具体实现
3、查找效率分析
4、折半查找判定树
5、拓展思考
7.2.2 折半查找小结
7.2.3 分块查找
1、算法思想
2、查找效率分析
3、拓展思考
7.2.3 分块查找小结
7.3 B树和B+树
- 将2叉查找树升级到5叉查找树
- 注意每个区间的范围
- 了解查找失败时,指针会落在哪里去?
- 例如:下图里表明的“失败结点”,范围在(15,22)的结点都会落到那里
- 每个结点内关键字太少,导致树变高,查找效率低下
- 所以为了保证查找的效率,就会规定每个结点内至少需要含有的关键字数量
- “不平衡”也不利于查找效率
- 但是参考平衡二叉树的规定,对于m叉查找树又太麻烦了,所以直接规定左、右子树高度要相同
7.3.1 B树及其基本操作
- 上面逼逼一大堆,关于B树比较重要的规定就是:
- 1、各子树要平衡(绝对平衡)
- 2、各结点的分叉数有规定
- 注意!!!下面的终端结点和叶子结点,别混淆了
- m阶B树,m个分叉,m-1个关键字
1、B树的高度
7.3.1 B树的基本概念小结
2、B树的插入
3、B树的删除
- 终端结点直接删除(但是也要注意结点里关键字的数量)
7.3.1 B树的基本操作小结
7.3.2 B+树的基本概念
考研中B+树不会考的很深,都是考一些基本概念的问题。
1、B+树满足的条件
- B树:m-1个关键字对应m个分支,m个子树
- B+树:m个关键字,对应m个分支,m个子树
- B+树里,查找信息并不会停留在分支节点上,会一直查找到叶子结点
2、B+树的查找
- B+树和B树关于查找的区别
- 看下B+树,B树两个图,B+树关键字会重复,B树不会重复
3、B+树 VS B树
7.3.2 B+树的小结
- B树只能进行随机查找,而B+树可以进行随机查找和顺序查找
7.4 散列表
7.4.1 散列表的基本概念
1、散列查找
7.4.2 散列函数
1、除留余数法
2、直接定址法
3、数字分析法
4、平方取中法
7.4.3 处理冲突的方法
一、开放定址法
1、线性探测法
- 哈希函数取模,和冲突函数取模,选的取模值不一定相同,看看下图标识
- 开发定址法:即可能和同义词发生冲突,也可能和非同义词发生冲突。
- 注意,此处对于空位置的判断也算作一次比较,和上一小节的拉链法不算空位置有区别
- 21%13=8,所以下图从84开始找,一旦遇到空(例如,10那个位置),就表明不需要在找下去了
- 上图里我们说到:越早遇到空位置,就可以越早确认查找失败。可是也有不适应的情况!
- 下图中假设删除元素1,使得2位置变空。
- 此时若要查找27元素,27%13=1,从1位置(14)开始找,可是此时2位置为空,就无法查找到4位置了元素27了。
- 针对上诉情况,规定在删除一个元素时不能简单删除元素就完事了,还需要做个删除标记,让查找时可以此处是因删除而空,而不是没有初始元素才空的。还需要接着往后找。
- 下面的看似表很满,实际真实数据并不多,也是开放定址法的一个弊端。
- 查找失败的效率分析
- 只有位置为空,才比较1次,不然就得一直遍历到13这个位置,才能确认失败。
- 为什么查找效率低:同义词、非同义词聚集堆积
- 聚集是因选取不当的处理冲突的方法造成的
2、平方探测法
- d是针对初始位置操作的,例如:元素32的位置就是6-1,而不是上一个位置7-1。
3、伪随机序列法
二、再散列法
7.4.3 处理冲突的方法小结
拉链法的小优化
考研人加油!!!