
推免复习
lzy我就来随便逛逛
纵浪大化中,不喜亦不惧
展开
-
计算机推免 正式开始复试复习
之前的一段时间一直沉迷于深度学习方面的学习和在leetcode上的刷题,现在准备把深度学习先放一放,腾出一个月左右的时间复习一下上过的专业课,预计的复习路线是这样:计算机网络=>数据结构和算法=>操作系统=>线性代数+概率论=>计算机组成原理计算机网络和数据结构是一定要复习完的,后面的就看有没有多的时间了,如果时间不够的话只能粗略过一遍了,博客一直都会更新,敬请期待...原创 2019-05-22 20:07:50 · 1764 阅读 · 0 评论 -
推免复习之数据结构与算法 环形队列
这篇写的是环形队列,上一篇顺序队列中也提到了,环形队列设计的初衷就是为了解决假溢出问题,那他是如何成为环形的呢?换句话说,指针是怎么从数组的后面回到前面来的呢?取余,环形队列的核心就是取余。back=(back+1)%maxSize;front=(front+1)%maxSize;大致上就是这两个操作,总之,问就是取余。实现代码如下所示:(PS:main函数里的是我自己的测试代...原创 2019-06-24 20:32:34 · 261 阅读 · 0 评论 -
推免复习之数据结构与算法 迪杰斯特拉算法
知识常看常新,虽然之前在刷pat时也重新复习过迪杰斯特拉算法,但是当时的注意力主要还是集中在对题目的解决上,而不是对这个算法本身的理解上,所有我想重新写一篇文章,来记录这个算法。迪杰斯特拉算法主要依靠的是贪心算法和BFS求最短路径,需要维护的数组共有四个,dist[]数组,pre[]数组,s[]数组和st[]数组。dist[]数组维护的是点v0到之后各点的最短路径长度;pre[]数组维护的是各...原创 2019-07-04 11:07:50 · 369 阅读 · 0 评论 -
推免复习之数据结构与算法 佛洛依德算法
佛洛依德算法算法作为一个经典的求最短路径的算法,思路其实很简单,就是不停地进行“松弛操作”,直到全部遍历一遍。那么什么是松弛操作呢?比如说我们的图存在一个邻接矩阵graph中,graph[v][u]为顶点v到顶点u的路径长度,松弛操作就是寻找一个中间节点k,使graph[v][u]>graph[v][k]+graph[k][u],若得到此关系,说明通过这个中间节点可以减小v和u之间的距离,所...原创 2019-07-04 12:25:27 · 434 阅读 · 0 评论 -
推免复习之数据结构与算法 Prim算法(最小生成树)
具体思路可以看我之前的文章https://blog.youkuaiyun.com/qq_38279908/article/details/83473010我这里就简单说说思路:每次都是取这种边:一边顶点是在树内的顶点,一边顶点是树外的顶点,且权值最小的,加入树中,顶点也改为已探索,之后更新lowcost数组和clostest数组,lowcost数组记录的是目前一直的到各节点的距离,closest数组记录...原创 2019-07-04 16:51:38 · 260 阅读 · 0 评论 -
推免复习之数据结构与算法 Kruskal算法(最小生成树)
非常尴尬,我之前写的那篇写克鲁斯卡尔算法的那篇博客思路是错误的,我当时也不知道是被哪篇博客误导了,汗。所以我在这里重新写一篇正确的,而且事先声明,我没有使用并查集,我只是使用了一个label数组来记录各个顶点各属于哪个集合,其他与正常求克鲁斯卡尔算法的思路一致。首先是使用三元组数据表作为存储的数据结构,每条边的数据结构如下所示:class edge{public: int st...原创 2019-07-04 19:44:45 · 233 阅读 · 0 评论 -
推免复习之数据结构与算法 二叉搜索树
二叉搜索树中有几个主要的操作,分别是插入元素,删除元素,查找元素。其中删除元素操作是属于稍微复杂一点的,因为在删除了节点之后,该节点左子树和右子树同样需要处理,而不是就直接粗暴地一起删除了,所以我会分三个部分讲解,主要以代码为主,辅以必要的文字说明。首先要介绍这个二叉搜索树到底是什么,简单地说,按照左子树节点小于父节点,右子树中的节点大于父节点,递归构建的二叉树就是二叉搜索树。好处是能极大提高...原创 2019-06-29 14:59:36 · 241 阅读 · 0 评论 -
推免复习之数据结构与算法 哈夫曼树
我要写的这篇内容主要是哈夫曼树的定义和建立过程,另外还包括了使用前序,中序,后序遍历来输出构建好的哈夫曼树,以验证哈夫曼树是否建立成功。哈夫曼树定义哈夫曼树就是带权外部路径长度最小的二叉树,是不是不太好理解?其实说白了,就是叶子节点的权值与它到根节点的路径长度加权和最小的一棵二叉树。假设有四个外部节点为2,3,4,6,则它的二叉树组合如下所示:当然,有很多组合,我就不一一列举了,我...原创 2019-06-29 20:58:53 · 224 阅读 · 0 评论 -
推免复习之数据结构与算法 直接插入排序
直接插入排序的时间复杂度是O(n^2),是稳定排序,这个算法思路也非常简单,就和玩扑克牌一样。从第二个数开始操作,也就是数组的下标从1开始,与前面的数进行对比,如果比前面的某个元素要小,则数组里的该元素向后顺序挪动一格,索引号减一,否则把数插入上一个索引号的位置。核心代码如下:void InsertSort(vector<int> &Input){ int s...原创 2019-07-05 11:06:30 · 220 阅读 · 0 评论 -
推免复习之数据结构与算法 希尔排序
具体思路看这篇博文,写得比我好多啦!我可懒得画这老些图 :)https://www.cnblogs.com/wanglei5205/p/8727377.html核心代码如下:void ShellSort(vector<int> &Input){ int size = Input.size(); int gap = size / 2; for (; gap ...原创 2019-07-05 14:14:22 · 226 阅读 · 0 评论 -
推免复习之数据结构与算法 选择排序
选择排序应该是我们接触的最早也是最简单的一种算法了,思路就是打擂台,每次都是从剩余元素中选择一个最大的(最小的)元素,顺序排放在对应的位置,一直循环即可完成选择排序。核心代码如下:void SelectSort(vector<int> &Input){ int size = Input.size(); for (int i = 0; i < size; i...原创 2019-07-05 14:33:48 · 186 阅读 · 0 评论 -
推免复习之数据结构与算法 冒泡排序
冒泡排序也是最简单最基础的排序算法之一了,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大(小),则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾,采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止。核心代码如下:void BubbleSort(vector<int> &Input){...原创 2019-07-05 15:12:32 · 180 阅读 · 0 评论 -
推免复习之数据结构与算法 DFS和BFS
DFS是深度优先遍历,一般使用递归实现,优先选择深度方向遍历。BFS是广度优先遍历,一般使用循环和队列实现,优先广度方向上的遍历,这两个算法都很常见,不多解释。直接放代码:#include<iostream>#include<vector>#include<queue>using namespace std;void inputGraph...原创 2019-06-30 16:09:06 · 264 阅读 · 0 评论 -
推免复习之数据结构与算法 堆排序
堆排序我也不准备细写,主要的原因是感觉我写的可能没有别的博客那么清晰,我没有必要重复造轮子,所以下面就放我看了之后觉得讲解的非常清晰的一篇博文https://www.cnblogs.com/chengxiao/p/6129630.html大体思路看完了,建堆和排序也会了,剩下的还有插入节点和删除节点操作,看这篇博客即可https://www.jianshu.com/p/21bef3fc3030...原创 2019-07-06 17:09:10 · 217 阅读 · 0 评论 -
推免复习之数据结构与算法 快速排序
本来吧,快排我已经写了一两篇文章记录了,但是我有一点强迫症,我想让这个系列能包括尽量全面的算法和知识点,所以我又重新写了一篇文章放在这里,其实就是签个到hhh具体的教程还是看别人的文章把,这些排序算法的讲解都要做很多图,我没这个耐心https://www.cnblogs.com/lifexy/p/7597276.html#include<iostream>#include&...原创 2019-07-06 18:57:08 · 206 阅读 · 0 评论 -
推免复习之数据结构与算法 顺序队列
这一篇实现的是普通的顺序队列,实现很简单,其实就是对线性表的限制,从队首出队,从队尾入队,缺点也很明显,那就是假溢出现象,假溢出现象意思是明明还有空的空间,但是却无法再往里存数据了,主要是两个游标的移动导致的,因此为了克服这个问题,在我的下一篇博客中我会实现一下环形队列。代码实现如下,供参考:#include<iostream>#include<vector>...原创 2019-06-24 19:53:03 · 192 阅读 · 0 评论 -
推免复习之数据结构与算法 栈计算器
下午花了一个多小时写了一个栈计算器,也算是对栈的应用的复习了,还记得大一的时候也写过这玩意,可是那时候我好像花的时间是两个下午。在讲解这个栈计算器的大体思路前,我先讲解一下我实现的功能:能够对加减乘除四个运算符进行运算,支持对括号的运算,但是输入的数字只能在0-9之间,也就是只能是一位数,因为是从字符串里读取的,所以每次只能读一位,否则需要采用别的方法分解式子,这个问题不是这个栈计算器的重点,...原创 2019-06-24 17:18:33 · 786 阅读 · 1 评论 -
推免复习之计算机网络 (1) 第一章 概述
开始之前先介绍一下我用的教材,因为我推免的目标院校是北邮,目标实验室又是北邮某个非常重视计算机网络的实验室,所以我选用的书和课件也是北邮的,书是谢希仁那本,课件如果有需要的话留下你的邮箱,我看到的话就会发给你。就酱!1.因特网的概述网络由若干节点和连接这些节点的链路组成。 互联网是“网络的网络”。 连接在互联网上的计算机都称为主机。2.网络与因特网网络把许多计算机连接在一起。 ...原创 2019-05-22 21:59:57 · 530 阅读 · 7 评论 -
数据结构复习之快排
其实按照我的复习进度,我现在应该是还在复习计算机网络,但是没忍住手痒去刷了刷leetcode,我做的题是 88. 合并两个有序数组,是个简单题,想要练习练习快排的可以找这题熟悉熟悉。void quick_sort(vector<int>& nums1, int left, int right) //快排{ if (left >= right) { r...原创 2019-05-27 21:19:10 · 205 阅读 · 0 评论 -
推免复习之计算机网络 (2) 第二章 物理层
1.物理层的作用物理层位于传输介质之上,它的作用是尽量屏蔽掉具体物理设备和传输媒体的差异,为数据链路层提供统一的服务。2.几个术语模拟信号:代表消息的参数的取值是连续的 数字信号:代表消息的参数的取值是离散的3.有关型号的几个概念单向通信(单工):只能有一个方向的通信,没有反方向的交互。 双向交替通信(半双工):通信的双方都可以发送信息,但双方不能同时发送(也不能同时接收)。...原创 2019-05-23 19:47:42 · 328 阅读 · 0 评论 -
推免复习之计算机网络 (3) 第三章 数据链路层
1.数据链路层的两种信道通信类型点对点信道。这种信道使用一对一的点对点通信方式 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送2.三个基本问题封装成帧,首部和尾部的一个重要作用是作为帧定界符 透明传输,数据中的控制字符使用字符填充的办法使之就像透明的一样 差错检验,使用循环冗余检验(CR...原创 2019-05-29 20:57:53 · 557 阅读 · 1 评论 -
推免复习之计算机网络 (4) 第四章 网络层
1.虚电路和数据报服务的对比 对比的方面 虚电路服务 数据报服务 思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证 连接的建立 必须有 不需要 终点地址 仅在连接...原创 2019-06-03 20:43:07 · 396 阅读 · 0 评论 -
推免复习之计算机网络 (5) 第五章 运输层
1.运输层协议和网络层协议之间的主要区别IP协议提供主机之间的逻辑通信 TCP协议和UDP协议提供进程之间的逻辑通信2.运输层的主要功能运输层为应用进程之间提供端到端的逻辑通信 运输层还要对收到的报文进行差错检测3.运输层的两个协议TCP协议(Transmission Control Protocol)又称传输控制协议,面向连接,相当于全双工的可靠信道,HTML采用TCP协议传...原创 2019-06-16 20:49:23 · 591 阅读 · 0 评论 -
推免复习之计算机网络 (6) 第六章 应用层
1.应用层协议的特点每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器...原创 2019-06-17 16:50:48 · 590 阅读 · 0 评论 -
推免复习之数据结构与算法 KMP算法
KMP算法是我不想写的一个算法,原因也很简单,我可以按照算法的思路写出代码实现字符串模式匹配,但是我发现我还是不太能解释这个算法。好像有句话说的是,不能把一个东西解释给别人听,本质上还是没有完全理解。所以我也不确定我这次能不能很好地解释这个算法,毕竟上次其实也写过KMP算法的博客,但最后还是没能好好地把这个算法讲明白了,比较遗憾。好,既然这次我决定重新讲解这个算法,我一定尽力不留遗憾 :)(丢...原创 2019-06-25 15:26:09 · 257 阅读 · 0 评论 -
推免复习之数据结构与算法 二叉树 (1)概念
二叉树这里概念性的东西还是有点的,所以还是需要记录记录的,当然不一定完整,只是按照我自己的喜好记录。1.二叉树的五种基本形态图的像素比较渣,别在意,自己不想画hhh2.满二叉树如果一棵二叉树的任何节点,要不就是树叶,要不就是同时拥有左节点和右节点,则这棵二叉树称作满二叉树(full binary tree)3.二叉树的主要性质在二叉树中,第i层上最多有(2^i)个节点 ...原创 2019-06-25 16:59:47 · 182 阅读 · 0 评论 -
推免复习之数据结构与算法 二叉树 (2)深度优先+广度优先
上一篇博客讲的是无聊的二叉树的性质,虽然推导过程也是挺有意思的,但这不是程序员的浪漫,Don't talk,just show me the code !所以我要写这篇对二叉树的深度优先遍历和广度优先遍历。深度遍历直接用递归即可,主要就是二叉树的前序遍历,中序遍历和后续遍历,广度优先遍历需要借助数据结构,也就是栈,先入先出,把队首节点的左子节点和右子节点入队后,再把他们的老父亲出队,知道队列为...原创 2019-06-25 18:53:32 · 203 阅读 · 0 评论 -
推免复习之操作系统 概述
1.操作系统的三大作用有效地管理资源 通过命令接口和编程接口向用户提供各种服务 对硬件机器的拓展(是硬件之上的第一层软件)2.操作系统从资源管理角度所提供的五大功能进程\线程管理功能(CPU管理) 存储管理 文件管理 设备管理 用户接口3.操作系统的主要特征并发:指处理多个同时性活动的能力 共享:操作系统与多个用户程序共同使用计算机系统中的资源(共享有限的系统资源)...原创 2019-07-07 16:35:13 · 894 阅读 · 0 评论 -
推免复习之数据结构和算法 顺序表篇
复习完计算机网络,那现在就要开始全新的篇章,数据结构和算法的复习,我会从前往后把比较重要的算法都尽量过一遍,算法我也会尽量自己实现一遍,其实有的算法在我之前的博客里已经实现过一遍了,但是我这次还会再实现一次的,毕竟知识常看常新嘛。以下是我的算法实现,没有做太多测试,不保证没有bug,就是给一个大致的实现思路:class arrList{private: int maxSize; ...原创 2019-06-23 16:50:36 · 558 阅读 · 0 评论 -
推免复习之数据结构与算法 单链表
这一篇是单链表,也算是数据结构里最简单的一种了,我也大概实现了一下其中的大部分功能,应该还有一点小bug,在删除元素那里,但是我懒得调试了,就这样吧,这个数据结构大体上算是复习到了。以后有这兴致再回来把那个部分改了。class Link{public: int data; Link * next; Link(Link * nextValue = NULL) //头节点 { ...原创 2019-06-23 21:15:48 · 222 阅读 · 0 评论 -
推免复习之数据结构与算法 顺序栈
这篇文章复习顺序栈,顺序栈就是对线性表进行限制,使之只能在队尾进行操作,也就是一种特殊的线性表,先入后出,后入先出。代码实现如下,仅供君参考:class arrStack{private: vector<int> s; int topCur; int size;public: arrStack() { topCur = -1; size = 0; ...原创 2019-06-24 10:20:17 · 248 阅读 · 0 评论 -
推免复习之数据结构与算法 归并排序
很早很早之前我也写过归并排序,所以我不再赘述,我之前写的那篇文章还是挺清楚的,文章的链接在此https://blog.youkuaiyun.com/qq_38279908/article/details/82932943写的代码好像和以前的那个没什么区别,代码如下,当然你也可以参考我之前的代码,都差不多:#include<iostream>#include<vector>...原创 2019-07-06 19:41:26 · 228 阅读 · 0 评论