Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
计算机考研复试常问问题 数据结构篇
2023-11-04
第一章 绪论
1、时间复杂度
时间复杂度
:算法执行时所需要的计算工作量,与整个算法的执行时间和基本操作重复的次数成正比。
一个语句的
频度
是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n)。
O
:T(n)的数量级。
【数量级】数量的尺度或大小的级别,每个级别之间保持固定的比例。
2、空间复杂度
空间复杂度
:算法执行时所耗费的存储空间。主要是指对数据进行操作所使用到的额外辅助空间。
算法原地工作:算法所需要的辅助空间为常量,即O(1)。
3、用循环比用递归的效率高吗?
各有优缺点
递归
优点:代码简洁。
缺点:递归调用次数过多,增加额外的堆栈处理,可能产生堆栈溢出。
循环
优点:结构简单,速度快。
缺点:有些问题难以解决,例如汉诺塔。
第二章 线性表
1、头指针和头节点的区别?
头指针
:指向第一个结点存储位置的指针,具有标识作用,是链表的必要元素,无论链表是否为空,头指针都存在。
头结点
:放在第一个元素结点之前,便于在第一个元素结点之前进行插入和删除操作,不是链表必须的,也不存储任何信息。
第三章 栈和队列
1、什么是栈?
只允许在表尾进行插入和删除操作,对插入到栈中的元素按“
后进先出
”的规则处理,插入和删除操作都在栈顶进行。
2、什么是队列?
只允许在表的一端进行插入另外一端进行删除操作,对插入到队列中的元素按“
先进先出
”的规则处理,在表头进行删除在表尾进行插入。
3、如何区分循环队列是队空还是队满?
普通情况下,循环队列队空和队满的判定条件是一样的。
方法一:牺牲一个位置来判断队空和队满。
方法二:增加一个表示元素个数的数据成员。
第四章 串
1、串的匹配模式
暴力模式匹配算法
:从主串的第一个字符开始,与子串的第一个字符比较,如果相同则继续比较下一个字符;如果不同则从主串的第二个字符开始,重新和子串的第一个字符比较,直到最后看是否匹配成功。
KMP算法
:当匹配失败时,如果已经匹配的相同前缀序列中有某个后缀正好是子串的前缀,则将子串向后滑动到与这些字符对齐的位置,主串的指针不变,并从该位置开始比较。
第五章 树与二叉树
1、二叉排序树
满足以下性质的二叉树:
若左子树不空,则左子树上所有结点的值均小于根结点的值;
若右子树不空,则右子树上所有结点的值均大于根结点的值;
左右子树又分别是二叉排序树。
2、二叉排序树的查找过程
从根结点开始,若根结点的关键字等于查找的关键字,则查找成功;
若小于根结点的关键字,则递归查找左子树;
若大于根结点的关键字,则递归查找右子树;
若查找到叶子结点还是不相等,则查找失败。
3、平衡二叉树
一种特殊的二叉排序树,左右子树的高度差的绝对值不超过1,且左右子树都是平衡二叉树。
平衡因子:左子树的高度减去右子树的高度。
4、哈夫曼树
定义
给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度最小,则称为
哈夫曼树
。
从树的根结点到任意结点的路径长度与该结点上权值的乘积,称为该
结点的带权路径长度
。
所有结点的带权路径长度之和称为该
树的带权路径长度
。
构造
把n个结点视为仅有一个结点的二叉树,构成森林F;
从F中选取两个根结点权值最小的树作为新结点的左、右子树,并且将新结点的权值置为左、右子树根结点的权值之和;
从F中删除刚才选取的两棵树,并将新的树加入F中;
重复上述操作,直到F中只剩一棵树为止。
特点
权值越大的结点,离根结点越近。
树中没有度为1的结点。
第六章 图
1、图的相关概念
图
:由结点的有穷集合V和边的集合E组成。
有向图
:若E是有向边(弧)的有限集合时,则为有向图。
无向图
:若E是无向边(边)的有限集合时,则为无向图。
完全图
:无向图中每一个顶点与其他所有顶点之间都存在边。
连通图
:无向图中任意两个顶点都是连通的。
连通分量
:无向图中的极大连通子图。
强连通图
:有向图中,如果一对顶点之间有相互到达的路径,则这两个顶点是强连通的。图中任意一对顶点都是强连通的,则称该图为强连通图。
强连通分量
:有向图中的极大强连通子图。
生成树
:连通图的生成树是包含图中全部顶点的一个极小连通子图。
生成森林
:非连通图中,连通分量的生成树构成生成森林。
简单路径
:顶点不重复的路径。
简单回路
:除第一个和最后一个顶点外,其余顶点不重复出现的回路。
2、图的存储方式
邻接矩阵
图的
顺序
存储结构。
用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息,存储顶点之间邻接关系的二维数组称为邻接矩阵。
邻接表
图的
链式
存储结构。
对图中每一个顶点建立一个单链表,每个单链表中的结点与该顶点直接相邻。
十字链表
有向图的另一个
链式
存储结构。
邻接多重表
无向图的另一种
链式
存储结构。
4、图的遍历
深度优先遍历
首先访问图中某一起始顶点v1,然后由v1出发,访问与v1相邻且未被访问的任一顶点v2,再访问与v2相邻且未被访问的任一顶点v3,重复上述操作。
当不能继续向下访问时,依次退回到最近被访问的顶点,若它还有邻接顶点未被访问,则从该顶点开始继续上述操作,直到图中所有顶点都被访问。
广度优先遍历
首先访问图中某一起始顶点v1,然后依次访问与v1相邻的所有未被访问过的顶点v2、v3...。
再从这些被访问过的v2、v3...出发,依次访问它们所有未被访问过的邻接结点,直到图中所有顶点都被访问。
5、最小生成树
普利姆(Prim)算法(选点)
从图中任取一顶点加入树T,此时树T中只有一个顶点;
然后选择一个
与当前树T的顶点集合距离最近的顶点
,并将其顶点和对应的边加入树T;
以此类推,直到图中所有顶点都加入树T。
克鲁斯卡尔(Kruskal)算法(选边)
初始时为n个顶点而无边的非连通图T,每个顶点自成一个连通分量;
不断
选取权值最小且未被选取过的边
,若该边
两端的顶点属于不同的连通分量
,则把该边加入T,否则选取下一条权值最小且未被选取过的边;
以次类推,直到T中所有顶点都在一个连通分量上。
6、最短路径
迪杰斯特拉(Dijkstra)算法
单源最短路径,即求图中某一顶点到其他顶点的最短路径。
设置一个集合S记录已经求得的最短路径的顶点。初始时把源点放入S中,计算源点到其它顶点的直接路径长度(若有),选择路径最短的顶点加入S,再根据该顶点重新计算源点到其它顶点的路径长度,重复上述操作,直到所有顶点都加入S。
打个比方,A到B的距离是10,A到C的距离是4,C到B的距离是3,则A到B的距离应该修改为7。
弗洛伊德(Floyd)算法
求每对顶点间的最短路径。
设置一个n阶方阵A记录每对顶点间的路径长度,其中A[i][j]表示从顶点i到顶点j的路径长度;
初始时,若任意两个顶点之间存在边,则该边的权值设为它们的最短路径;若不存在有向边,则把值设为∞;
之后在原路径中不断加入其他顶点作为中转点。若增加中转点后,得到的路径比原路径长度更短,则修改原路径。
7、关键路径
定义
:从源点到汇点的所有路径中,
具有最大路径长度的路径
称为关键路径。
关键路径的长度是完成整个工程的最短时间。
第七章 查找
1、查找方法总结
顺序查找
把待查找关键字放入哨兵位置(i=0),再从后往前依次比较表中元素。
时间复杂度:O(n)
折半查找
要求查找表为顺序存储结构且有序。每次比较中间元素,大了查右边,小了查左边。
时间复杂度:O(log₂n)
分块查找
把查找表分为若干块,块间有序,块内无序。
查找时块间进行索引查找,块内进行顺序查找。
二叉排序树
时间复杂度:O(log₂n)
2、B树和B+树
B树:也称为
多路平衡查找树
,是二叉查找树的一般化,非叶子结点可以有两个或两个以上的子结点。
B+树:B树的变体形式。
与B树的差异:
B+树中,具有n个关键字的结点只含有n棵子树;B树中,具有n个关键字的结点含有n+1棵子树。
同阶下,关键字个数范围不同。
B+树中,每个结点(除根节点外)中的关键字个数n的范围是⌈m/2⌉<=n<=m
(根节点:
2<=n
<=m)
;B树中,每个结点(除根节点外)中的关键字个数n的范围是⌈m/2⌉-1<=n<=m-1
(根节点:
1<=n
<=m-1)
。
B+树中,所有非叶子结点仅仅起到索引的作用,叶节点包含了全部关键字;B树中,叶节点包含的关键字与非叶节点包含的关键字不重复。
【注】阶:树中结点的最大子结点个数。
3、哈希表
概念
通过把关键字码的值映射到表中的一个位置以加快查找速度。
哈希函数的构造方法
直接定址法
除留余数法
数字分析法
平方取中法
折叠法
随机数法
哈希冲突的解决方法
开放定址法
线性探测法
在发生冲突的位置,依次向后循环查找空缺的位置放置。
二次探测法
双重散列法
使用两个散列函数来确定位置
拉链法
将所有关键字为同义词的结点链接到同一个单链表中。
第八章 排序
1、直接插入排序(稳定)
基本思想:将序列分为有序部分和无序部分,从无序部分中依次选择元素与有序部分进行顺序比较,找到合适的位置,将原来的元素及其后面的元素向后移,再将元素插入到相应的位置。
时间复杂度:O(n²)
空间复杂度:O(1)
2、折半插入排序(稳定)
基本思想:与直接插入排序相似,但使用折半查找找到适合位置,再将其他元素后移,最后将元素插入到相应的位置。
时间复杂度:O(nlog₂n)
空间复杂度:O(1)
3、希尔排序(不稳定)
基本思想:将序列中相隔某个增量的元素组成一个子序列,对各子序列分别进行直接插入排序,当整个序列的元素基本有序时,再进行一次直接插入排序。
空间复杂度:O(1)
4、简单选择排序(不稳定)
基本思想:每经过一趟在序列中找一个最小值,然后与序列的第一个元素交换并固定,固定的元素不参与后续比较。
时间复杂度:O(n²)
空间复杂度:O(1)
5、堆排序(不稳定)
分类:大根堆和小根堆。
大根堆
:每个结点的值都大于或等于其左、右孩子的值。
小根堆
:每个结点的值都小于或等于其左、右孩子的值。
基本思想:把序列建成初始堆,输出堆顶元素后,对其重新建堆,再输出堆顶元素,重复操作,直到堆中仅剩一个元素。
时间复杂度:O(nlog₂n)
空间复杂度:O(1)
6、冒泡排序(稳定)
基本思想:从前往后(或从后往前)两两比较相邻元素的值,若为逆序,则交换,直到比较完最后一个元素,固定该元素不再参与后续比较。再从头开始重复上述操作,每轮比较都能选出一个固定的元素。
时间复杂度:O(n²)
空间复杂度:O(1)
7、快速排序(不稳定)
基本思想:在序列中任意选择一个元素作为中心,把比它大的元素移到右边,把比它小的元素移到左边,形成左右两个子序列,再把子序列按上述操作调整,直到所有子序列只有一个元素时即为有序。
时间复杂度:O(nlog₂n)
空间复杂度:O(log₂n)
8、归并排序(稳定)
基本思想:将两个或者两个以上的有序表合并成一个新的有序表。
时间复杂度:O(nlog₂n)
空间复杂度:O(n)
9、基数排序(稳定)
基本思想:按关键字的权重依次进行排序,最后形成一个有序序列。
时间复杂度:O(d(n+r))
空间复杂度:O(r)
【注】n个数、r个队列、d趟分配
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)
计算机基础知识
考研
计算机考研复试常问问题 数据结构篇 的相关文章
没写博客的一年,我在干嘛
机缘 最初成为创作者的初心 还记得独自一人学习Java的那个时候 从早学到晚 不知疲倦 有了一定的基础以后 就写上了博客 边学边写 收获 丝慢慢增长 不知不觉已经快三千人了 浏览量也还不错 憧憬 已经很久没有写博客了 2021备考考研 功夫
人工学习之预测2023年考研英语答案分布
统计了2012 2022年共计11年的英语一完形和阅读答案 除了20年 ABCD四个选项基本都均匀分布 所以大概率是各自5个或者两个5一个4 20年类似13年 不管完形还是阅读 答案都是十分均匀分布 即5555型 至于原因 可能是老师的偏好
只考一门数据结构!安徽工程大学计算机考研
安徽工程大学 考研难度 内容 23考情概况 拟录取和复试分析 院校概况 23专业目录 23复试详情 各专业考情分析 各科目考情分析 正文992字 预计阅读 3分钟 2023考情概况 安徽工程大学计算机相关各专业复试和拟录取分析 083500
计算机的性能公式
cpu执行时间 简称CPU时间 表示执行某一任务在CPU上所花费的时间 不包括等待I O或运行其他程序的时间 程序的cpu执行时间 cpu时钟周期数 时钟周期时间 cpu时钟周期数 主频 要想缩短cpu执行时间 最简单的方法就是缩短cpu的
计算机考研复试上机算法学习
计算机考研复试上机算法学习 这篇博客是博主在准备可能到来的线下上机复试基于王道机试指南的学习 将各道习题链接和代码记录下来 这篇博客权且当个记录 文章目录 计算机考研复试上机算法学习 1 STL容器学习 1 1 vector动态数组 1 1
宋浩线性代数笔记(六)二次型
本章的内容比较少且均通俗易懂 较第三章和第五章容易许多 之后还有针对于数学一的第7更 数二数三的选手已经可以完结撒花
考研OS备考
本文主要是考研复试备考自用 所以课后习题答案主要是简答题部分 此外还有其他的简答补充 如果发现有误 欢迎在评论区或者私信指出 计算机操作系统 汤小丹慕课版 课后习题答案 考研备考 第1章 操作系统引论 第1章 课后习题答案 第1章 零碎知识
数据结构--回顾数据结构基本概念、数据结构三要素
目录 什么是数据 数据元素 什么是数据对象 什么是数据结构 数据结构的三要素 逻辑结构 1 集合 2 线性结构 编辑 3 树形结构 4 图结构 数据的运算 物理结构 也叫做存储结构 1 顺序存储 2 链式存储 3 索引存储 借助索引表 4
Java基于微信小程序的一起考研学习平台
第一章 简介 本文研究了基于微信小程序一起考研学习平台 通过该系统 用户可以主动的在线学习 下载资料 解决实际的问题 提高了效率 同时加强了用户之间的相互交流沟通 促进了信息化的发展 本文研究开发的小程序是学习并上传下载的小程序 开发完成后
2022中山大学计算机技术专硕考研初试、复试经验帖
2022年中山大学计算机技术专硕考研初试 复试经验帖 个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧 可以帮助节省时间 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 如果觉得有帮助的话可以点个收藏后续会修改和增加内容
考研调剂问题-应届生调剂到非全的一些问题
随着考研逐渐 高考化 千军万马过过独木桥 大多数应届生都不能如意上榜 随着而来的一个问题 调剂 这里仅以计算机大类专业为准 是选择调剂一个普通高校的全日制 还是调剂到较为优异的学校的非全专业 一些应届同学对非全既渴望又担心 渴望是能够拿到研
分享一个OJ平台——浙江工商大学的OJ平台
1 引言 最近是有总喜欢讨论算法题 因为他们在准备考研复试 为什么我不准备呢 这是一个悲伤的故事 刚好自己也有面试遇到只能使用C和C 的代码题 他们说这OJ平台相对简单一些 那些刷不来LeetCode可以试试这个 作为入门算法的跳板 体验体
考研教训分享
考研教训分享 大家好 今天分享一篇考研教训 这不是经验帖 这只是一篇避坑指南 记录了我考研期间所走的所有弯路 希望可以帮助到在这条路上奋斗的你 我是某双非的工科考生 所以这篇文章更偏向于考数学的研友 2月中旬备考 复习前感觉自己之前大学学过
宋浩概率论笔记(七)参数估计
数一概率论大题的核心内容 关键是公式的背诵 需要特别重视
宋浩线性代数笔记(二)矩阵及其性质
更新线性代数第二章 矩阵 本章为线代学科最核心的一章 知识点多而杂碎 务必仔细学习 重难点在于 1 矩阵的乘法运算 2 逆矩阵 伴随矩阵的求解 3 矩阵的初等变换 4 矩阵的秩 去年写的字 属实有点ugly 大家尽量看
【山河送书第十一期】:朋友圈大佬都去读研了,这份备考书单我码住了,考研书籍五本!!
朋友圈大佬都去读研了 这份备考书单我码住了 数据结构与算法分析 计算机网络 自顶向下方法 现代操作系统 深入理解计算机系统 概率论基础教程 原书第10版 线性代数 原书第10版 线性代数及其应用 重磅推荐 参与方式 往期赠书回顾 八九月的朋
Acwing提高课DP二刷(考研复习)
前言 本博客主要是为了准备考研数据结构自命题而写的 主要为个人复习使用 里面的题博主在大一大二基本都刷了若干遍 所以这里只写一些简单的思路和总结评语 供日后回顾复习使用 DP 1 acwing1010 导弹拦截 题目大意 利用若干组互相独立
【考研】数据结构——线索二叉树
CSDN话题挑战赛第2期 参赛话题 学习笔记 前言 本文内容源于对 数据结构 C语言版 第2版 王道讲解学习所得心得 笔记整理和总结 本文针对线索二叉树 在最后的练习中 以举例子说明该排序方法 配以图文 讲解详细 含408真题 可搭配以下链
考研机试题 -- 字符串、背包、枚举
目录 首字母大写 字符串 日志排序 字符串 双关键字排序 字符串转换整数 字符串 点菜问题 01背包 神奇的口袋 01背包 计数 整数拆分 完全背包 计数 CCF201512 2 消除类游戏 枚举 首字母大写 字符串 https www n
springboot_vue考研在线学习与交流平台_30vy7
考研在线学习与交流平台根据实际情况分为前后台两部分 前台部分主要是让用户使用的 包括用户的注册登录 首页 课程信息 在线讨论 系统公告 后台管理 个人中心等功能 后台部分主要给管理员使用的 主要功能包系统首页 个人中心 用户管理 类型管理
随机推荐
OpenGL计算着色器实现光线追踪——以球体跟踪为例
OpenGL计算着色器实现光线追踪 以球体跟踪为例 光线追踪是渲染领域中的一种技术 通过在场景中发射光线并迭代计算来确定每个像素的颜色值 这种技术可以用于生成真实感和高度逼真的渲染图像 而在OpenGL中 我们可以利用计算着色器实现光线追踪
Qt应用开发(基础篇)——工具按钮类 QToolButton
一 前言 QToolButton类继承于QAbstractButton 该部件为命令或选项提供了一个快速访问按钮 通常用于QToolBar中 按钮基类 QAbstractButton QToolButton是一个特殊的按钮 一般显示文本 只
机器学习中的高斯分布
文章目录 一 高斯分布的概率密度函数 二 一元高斯分布的极大似然估计 2 1 M L E
box2d 服务器性能,Box2d三种施加力的方法
package import Box2D Collision Shapes b2PolygonShape import Box2D Common Math b2Vec2 import Box2D Dynamics Joints b2Revo
2023中国新型灵活就业报告
导读 9月12日 暨南大学经济与社会研究院和智联招聘联合发布 2023中国新型灵活就业报告 据了解 本报告中新型灵活就业职位具体包括八类工种 平台电商 生活配送 生活服务 平台微商 知识服务 自媒体 平台直播 共享出行司机 八类工种中生活配
测试边界值(上点、内点、离点)
测试边界值 上点 内点 离点 上点 就是指得边界上得点 开区间的话 上点就是在域外 闭区间得话 上点就是在域内 离点 指得就是离上点最近得点 如果是开区间 那么离点就在域内 如果是闭区间 那么离点就在域外 内点 域内得任意点都是内点 实例
scala学习系列(四) Scala关键字(持续更新)
Scala有39个关键字 package import class object 伴生对象关键字 trait extends with type for private protected abstract sealed final imp
[Unity]环形进度条(Progress)/拖拽条(Slider)制作
先上效果图 上图演示效果可用于圆形进度条的加载 或者用于拖拽验证码的实现 原理相同 以下所有算法获得的坐标均是在fillorign为top时的公式 拖拽物体的位置 通过点击拖拽获取当前Rect下本地坐标 然后将这个坐标进行标准化 norma
C++一行输入多个整数,每个整数用空格隔开,回车结束输入
C 一行输入多个整数 每个整数用空格隔开 回车结束输入 include
求生之路2社区服务器sourcemod安装配置搭建教程centos
求生之路2社区服务器sourcemod安装配置搭建教程centos 大家好我是艾西 通过上文我们已经成功搭建了求生之路2的服务端 但是这个服务端是纯净的服务端 就是那种最纯粹的原版 如果想要实现插件 sm开头的命令等功能 需要安装这个sou
QZXing识别二维码
下载QZXing这个识别二维码库 在github上下载qzxing https github com zxing zxing中的QZXing 新建qt工程 在pro文件中加入include QZXing sourceV2 4 QZXing
C++ 命名返回值优化(NRVO)
命名的返回值优化 NRVO 这优化了冗余拷贝构造函数和析构函数调用 从而提高了总体性能 值得注意的是 这可能导致优化和非优化程序之间的不同行为 下面是代码段1中的一个简单示例 以说明优化及其实现方式 A MyMethod B var A r
自动化运维:Ansible之playbook基于ROLES部署LNMP平台
目录 一 理论 1 playbook剧本 2 ROLES角色 3 关系 4 Roles模块搭建LNMP架构 二 实验 1 Roles模块搭建LNMP架构 三 问题 1 剧本启动php报错语法问题 2 剧本启动mysql报错语法问题 3 剧本
Python编程:从入门到实践关于pi,百万位圆周率,pi_million_digits.txt,分享给大家
blog github hexo的blog链接 github 我的github传送 CSDN 我的CSDN博客 学习python中需要一个百万圆周率的txt文件 但是按书上的链接又打不开 百度找了很久才找到 分享一下 以下是前500位 3
Sqlserver内存管理:限制最大占用内存
一 Sqlserver对系统内存的管理原则是 按需分配 且贪婪 用完不还 它不会自动释放内存 因此执行结果集大的sql语句时 数据取出后 会一直占用内存 直到占满机器内存 并不会撑满 还是有个最大限制 比机器内存稍小 在重启服务前 sqls
获取使用system权限
win7 win8 获取system权限 win7的服务 注册表 文件夹等一些东西 即便你是administrator也没法修改 真郁闷 那就用system权限吧 以下方法是让一个程序以system权限运行 而不是类似在右键修改权限获取文件
【Unity Shader】纹理实践2.0:基本属性&封装和滤波模式
关于理论知识 技术美术图形部分 纹理基础1 0 纹理管线 flashinggg的博客 CSDN博客 上篇是总结了纹理映射一整个的流程 其中2 3纹理采样中提到了需要进行两块设置 设置封装模式 Wrap Mode 介绍了封装模式都有哪些 设置
[NC] 仓鼠与珂朵莉-分块
给定一个长度为n的序列 m个询问 每次给出一个区间 查找区间内x cnt x 的最大值 由于题目的限制 下一次询问的区间会受到上一次查询结果的影响 所以必须要进行强制在线处理 首先将数列分成ceil n blk 1 块 对于询问中b l 1
android 11.0 开机动画横屏显示
目录 1 概述 2 开机动画横屏显示的核心代码部分 3 开机动画横屏显示的核心代码部分分析以及实现功能
计算机考研复试常问问题 数据结构篇
第一章 绪论 1 时间复杂度 时间复杂度 算法执行时所需要的计算工作量 与整个算法的执行时间和基本操作重复的次数成正比 一个语句的频度是指该语句在算法中被重复执行的次数 算法中所有语句的频度之和记为T n O T n 的数量级 数量级 数量
热门标签
servlet初试
第七章移动Web
留着慢慢看
公链开发
常规问题处理
IC前端设计学习记录
前沿科技类
AGIC
自定义logger
使用中间件
testsh
json float
AI模型推理