本文目录导航:
计算机专硕考研科目
计算机专硕考研科目关键包括以下几个方面:数学基础、数据结构与算法、操作系统、计算机网络、数据库原理与运行、软件工程、人工默认等。
1.数学基础:
数学基础是计算机专硕考研中十分关键的一门科目,关键包括数学剖析、线性代数、概率论与数理统计等外容。
在考试中,或许会触及到微积分、向量、矩阵、概率散布等方面的标题。
经过学习数学基础,可以为后续的计算机专业课程打下松软的数学基础。
2.数据结构与算法:
数据结构与算法是计算机专业中最基础、最关键的科目之一。
经过学习数据结构与算法,可以了解经常出现的数据结构(如数组、链表、栈、队列、树、图等)的基本原理和运行,同时也须要学习各种算法,如排序算法、查找算法、图算法等的设计与剖析方法。
3.操作系统:
操作系统是计算机专业中的一门关键课程,关键引见计算机操作系统的基本原理和设计方法。
学习操作系统须要了解进程治理、内存治理、文件系统、死锁处置等外容,同时也须要把握经常出现的操作系统概念和技术。
操作系统是计算机系统的外围组成局部,关于了解计算机系统的上班原理和提高系统功能具备关键意义。
4.计算机网络:
计算机网络是计算机专业中的一门关键课程,关键引见计算机网络的基本原理、协定和技术。
学习计算机网络须要了解数据通讯、网络拓扑结构、路由与转发、网络安保等外容。
计算机网络是衔接世界各种计算设备的基础设备,关于了解互联网的上班原理和成功网络通讯具备关键意义。
5.数据库原理与运行:
数据库原理与运行是计算机专业中的一门关键课程,关键引见数据库的基本概念、数据模型、数据库设计与治理、SQL言语等外容。
学习数据库须要了解相关数据库实践、数据库查问言语和数据库治理系统的原理与运行。
数据库是计算机运行畛域中最罕用的数据存储和治理方式,关于提高数据处置和治理才干十分关键。
6.软件工程:
软件工程是计算机专业中的一门关键课程,关键引见软件开发的基本原理、方法和技术。
学习软件工程须要了解软件生命周期、需求剖析、软件设计与成功、软件测试与保养等外容。
软件工程是规范化和系统化的软件开发环节,关于提高软件开发品质和效率具备关键意义。
7.人工默认:
人工默认是计算机专业中的一门前沿课程,关键引见人工默认的基本概念、算法和运行。
学习人工默认须要了解机器学习、深度学习、人造言语处置等外容,并能够运行相关算法处置实践疑问。
人工默认是目前计算机畛域的抢手方向,关于把握人工默认技术和利用具备关键意义。
什么是算法与数据结构
算法(Algorithm)是一系列处置疑问的明晰指令,也就是说,能够对必定规范的输入,在有限期间内取得所要求的输入。
假设一个算法有毛病,或不适宜于某个疑问,口头这个算法将不会处置这个疑问。
不同的算法或许用不同的期间、空间或效率来成功雷同的义务。
一个算法的优劣可以用空间复杂度与期间复杂度来权衡。
算法可以了解为有基本运算及规则的运算顺序所构成的完整的解题步骤。
或许看成依照要求设计好的有限确实切的计算序列,并且这样的步骤和序列可以处置一类疑问。
一个算法应该具备以下五个关键的特色: 1、有穷性: 一个算法必定保障口头有限步之后完结; 2、确切性: 算法的每一步骤必定有确切的定义; 3、输入:一个算法有0个或多个输入,以描写运算对象的初始状况,所谓0个输入是指算法自身定除了初始条件; 4、输入:一个算法有一个或多个输入,以反映对输入数据加工后的结果。
没有输入的算法是毫有意义的; 5、可行性: 算法准则上能够准确地运转,而且人们用笔和纸做有限次运算后即可成功。
计算机迷信家尼克劳斯-沃思曾著过一本驰名的书《数据结构十算法= 程序》,可见算法在计算机迷信界与计算机运行界的位置。
数据结构是计算机存储、组织数据的方式。
数据结构是指相互之间存在一种或多种特定相关的数据元素的汇合。
通常状况下,精心选用的数据结构可以带来更高的运转或许存储效率。
数据结构往往同高效的检索算法和索引技术有关。
普通以为,一个数据结构是由数据元素依据某种逻辑咨询组织起来的。
对数据元素间逻辑相关的形容称为数据的逻辑结构;数据必定在计算机内存储,数据的存储结构是数据结构的成功方式,是其在计算机内的示意;此外探讨一个数据结构必定同时探讨在该类数据上口头的运算才有意义。
在许多类型的程序的设计中,数据结构的选用是一个基本的设计思考起因。
许多大型系统的结构阅历标明,系统成功的艰巨水平和系统结构的品质都重大的依赖于能否选用了最优的数据结构。
许多时刻,确定了数据结构后,算法就容易失掉了。
有些时刻事情也会反上来,咱们依据特定算法来选用数据结构与之顺应。
不论哪种状况,选用适宜的数据结构都是十分关键的。
选用了数据结构,算法也随之确定,是数据而不是算法是系统结构的关键起因。
这种洞见造成了许多种软件设计方法和程序设计言语的出现,面向对象的程序设计言语就是其中之一。
在计算机迷信中,数据结构是一门钻研非数值计算的程序设计疑问中计算机的操作对象(数据元素)以及它们之间的相关和运算等的学科,而且确保经过这些运算后所失掉的新结构依然是原来的结构类型。
“数据结构”作为一门独立的课程在国外是从1968年才开局设立的。
1968年美国唐·欧·克努特传授开创了数据结构的最后体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地论述数据的逻辑结构和存储结构及其操作的著述。
“数据结构”在计算机迷信中是一门综合性的专业基础课。
数据结构是介于数学、计算机配件和计算机软件三者之间的一门外围课程。
数据结构这一门课的内容不只是普通程序设计(特意是非数值性程序设计)的基础,而且是设计和成功编译程序、操作系统、数据库系统及其余系统程序的关键基础。
计算机是一门钻研用计算机启动消息示意和处置的迷信。
这外面触及到两个疑问: 消息的示意 消息的处置 而消息的示意和组又间接相关四处置消息的程序的效率。
随着计算机的遍及,消息量的参与,消息范围的拓宽,使许多系统程序和运行程序的规模很大,结构又相当复杂。
因此,为了编写出一个“好”的程序,必定剖析待处置的对象的特色及各对象之间存在的相关,这就是数据结构这门课所要钻研的疑问。
妇孺皆知,计算机的程序是对消息启动加工处置。
在大少数状况下,这些消息并不是没有组织,消息(数据)之间往往具备关键的结构相关,这就是数据结构的内容。
数据的结构,间接影响算法的选用和效率。
计算机处置一个详细疑问时,大抵须要经过下列几个步骤:首先要从详细疑问中形象出一个适当的数学模型,而后设计一个解此数学模型的算法(Algorithm),最后编出程序、启动测试、调整直至失掉最终解答。
寻求数学模型的实质是剖析疑问,从中提取操作的对象,并找出这些操作对象之间含有的相关,而后用数学的言语加以形容。
计算机算法与数据的结构亲密相关,算法无不依靠于详细的数据结构,数据结构间接相关到算法的选用和效率。
运算是由计算机来成功,这就要设计相应的拔出、删除和修正的算法 。
也就是说,数据结构还须要给出每种结构类型所定义的各种运算的算法。
数据是对主观事物的符号示意,在计算机迷信中是指一切能输入到计算机中并由计算机程序处置的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个全体思考。
一个数据元素由若干个数据项组成。
数据项是数据的无法宰割的最小单位。
有两类数据元素:一类是无法宰割的原子型数据元素,如:整数5,字符 N 等;另一类是由多个款项构成的数据元素,其中每个款项被称为一个数据项。
例如形容一个在校生的消息的数据元素可由下列6个数据项组成。
其中的出身日期又可以由三个数据项:年、月和日组成,则称出身日期为组合项,而其它无法宰割的数据项为原子项。
关键字指的是能识别一个或多个数据元素的数据项。
若能起惟一识别作用,则称之为 主 关键字,否则称之为 次 关键字。
数据对象是性质相反的数据元素的汇合,是数据的一个子集。
数据对象可以是有限的,也可以是有限的。
数据处置是指对数据启动查找、拔出、删除、兼并、排序、统计以及便捷计算等的操作环节。
在早期,计算机关键用于迷信和工程计算,进入八十年代以后,计算机关键用于数据处置。
据有关统计资料标明,如今计算机用于数据处置的期间比例到达80%以上,随着期间的推移和计算机运行的进一步遍及,计算机用于数据处置的期间比例必将进一步增大。
数据结构是指同一数据元素类中各数据元素之间存在的相关。
数据结构区分为逻辑结构、存储结构(物理结构)和数据的运算。
数据的逻辑结构是对数据之间相关的形容,有时就把逻辑结构简称为数据结构。
逻辑结构方式地定义为(K,R)(或(D,S)),其中,K是数据元素的有限集,R是K上的相关的有限集。
数据元素相互之间的相关称为结构。
有四类基本结构:汇合、线性结构、树形结构、图状结构(网状结构)。
树形结构和图形结构全称为非线性结构。
汇合结构中的数据元素除了同属于一种类型外,别无其它相关。
线性结构中元素之间存在一对一相关,树形结构中元素之间存在一对多相关,图形结构中元素之间存在多对多相关。
在图形结构中每个结点的前驱结点数和后续结点数可以恣意多个。
数据结构在计算机中的示意(映像)称为数据的物理(存储)结构。
它包括数据元素的示意和相关的示意。
数据元素之间的相关有两种不同的示意方法:顺序映象和非顺序映象,并由此失掉两种不同的存储结构:顺序存储结构和链式存储结构。
顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑相关由存储单元的邻接相关来表现,由此失掉的存储示意称为顺序存储结构。
顺序存储结构是一种最基本的存储示意方法,通常借助于程序设计言语中的数组来成功。
链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑相关是由附加的指针字段示意的。
由此失掉的存储示意称为链式存储结构,链式存储结构通常借助于程序设计言语中的指针类型来成功。
索引存储方法:除建设存储结点消息外,还建设附加的索引表来标识结点的地址。
散列存储方法:就是依据结点的关键字间接计算出该结点的存储地址。
数据结构中,逻辑上(逻辑结构:数据元素之间的逻辑相关)可以把数据结构分红线性结构和非线性结构。
线性结构的顺序存储结构是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。
线性表若驳回链式存储示意时一切结点之间的存储单元地址可延续可不延续。
逻辑结构与数据元素自身的方式、内容、相对位置、所含结点个数都有关。
算法的设计取决于数据(逻辑)结构,而算法的成功依赖于驳回的存储结构。
数据的运算是在数据的逻辑结构上定义的操作算法,如检索、拔出、删除、降级的排序等。
一文带你意识30个关键的数据结构和算法
数组是最便捷也是最经常出现的数据结构。
它们的特点是可以经过索引(位置)轻松访问元素。
它们是做什么用的?
构想一下有一排剧院椅。
每把椅子都调配了一个位置(从左到右),因此每个观众都会从他将要坐的椅子上调配一个号码。
这是一个数组。
将疑问裁减到整个剧院(椅子的行和列),您将领有一个二维数组(矩阵)。
个性
链表是线性数据结构,就像数组一样。
链表和数组的关键区别在于链表的元素不存储在延续的内存位置。
它由节点组成——实体存储以后元素的值和下一个元素的地址援用。
这样,元素经过指针链接。
它们是做什么用的?
链表的一个相关运行是阅读器的上一页和下一页的成功。
双链表是存储用户搜查显示的页面的完美数据结构。
个性
堆栈是一种形象数据类型,它方式化了受限访问汇合的概念。
该限度遵照 LIFO(后进先出)规则。
因此,参与到堆栈中的最后一个元素是您从中删除的第一个元素。
堆栈可以经常使用数组或链表来成功。
它们是做什么用的?
事实生存中最经常出现的例子是在食堂中将盘子叠放在一同。
位于顶部的板首先被移除。
搁置在最底部的盘子是在堆栈中保管期间最长的盘子。
堆栈最有用的一种状况是您须要失掉给定元素的相反顺序。
只有将它们所有推入堆栈,而后弹出它们。
另一个幽默的运行是有效括号疑问。
给定一串括号,您可以经常使用堆栈审核它们能否婚配。
个性
队列是受限访问汇合中的另一种数据类型,就像前面探讨的堆栈一样。
关键区别在于队列是依照FIFO(先进先出)模型组织的:队列中第一个拔出的元素是第一个被移除的元素。
队列可以经常使用固定长度的数组、循环数组或链表来成功。
它们是做什么用的?
这种形象数据类型 (ADT) 的最佳用途当然是模拟事实生存中的队列。
例如,在呼叫中心运行程序中,队列用于保管期待从顾问那里取得协助的客户——这些客户应该依照他们呼叫的顺序取得协助。
一种不凡且十分关键的队列类型是优先级队列。
元素依据与它们关联的“优先级”被引入队列:具备最高优先级的元素首先被引入队列。
这个 ADT 在许多图算法(Dijkstra 算法、BFS、Prim 算法、霍夫曼编码 )中是必无法少的。
它是经常使用堆成功的。
另一种不凡类型的队列是deque 队列(双关语它的发音是“deck”)。
可以从队列的两端拔出/删除元素。
个性
Maps (dictionaries)是蕴含键汇合和值汇合的形象数据类型。
每个键都有一个与之关联的值。
哈希表是一种不凡类型的映射。
它经常使用散列函数生成一个散列码,放入一个桶或槽数组:键被散列,结果散列批示值的存储位置。
最经常出现的散列函数(在泛滥散列函数中)是模常数函数。
例如,假设常量是 6,则键 x 的值是x%6。
理想状况下,散列函数会将每个键调配给一个惟一的桶,但他们的大少数设计都驳回了不完善的函数,这或许会造成具备相反生成值的键之间出现抵触。
这种碰撞总是以某种方式顺应的。
它们是做什么用的?
Maps 最驰名的运行是言语词典。
言语中的每个词都为其指定了定义。
它是经常使用有序映射成功的(其键按字母顺序陈列)。
通讯录也是一张Map。
每个名字都有一个调配给它的电话号码。
另一个有用的运行是值的规范化。
假定咱们要为一天中的每一分钟(24 小时 = 1440 分钟)调配一个从 0 到 1439 的索引。
哈希函数将为h(x) = x.小时*60+x.分钟。
个性
术语:
由于maps 是经常使用自平衡红黑树成功的(文章前面会解释),所以一切操作都在 O(log n) 内成功;一切哈希表操作都是常量。
图是示意一对两个汇合的非线性数据结构:G={V, E},其中 V 是顶点(节点)的汇合,而 E 是边(箭头)的汇合。
节点是由边互连的值 - 形容两个节点之间的依赖相关(有时与老本/距离相关联)的线。
图有两种关键类型:有向图和无向图。
在无向图中,边(x, y)在两个方向上都可用:(x, y)和(y, x)。
在有向图中,边(x, y)称为箭头,方向由其称号中顶点的顺序给出:箭头(x, y)与箭头(y, x) 不同。
它们是做什么用的?
个性
图论是一个宽广的畛域,但咱们将重点引见一些最出名的概念:
一棵树是一个无向图,在连通性方面最小(假设咱们消弭一条边,图将不再衔接)和在无环方面最大(假设咱们参与一条边,图将不再是无环的)。
所以任何无环连通无向图都是一棵树,但为了便捷起见,咱们将有根树称为树。
根是一个固定节点,它确定树中边的方向,所以这就是一切“开局”的中央。
叶子是树的终端节点——这就是一切“完结”的中央。
一个顶点的孩子是它上方的事情顶点。
一个顶点可以有多个子节点。
一个顶点的父节点是它上方的事情顶点——它是惟一的。
它们是做什么用的?
咱们在任何须要描画档次结构的时刻都经常使用树。
咱们自己的家谱树就是一个完美的例子。
你最新鲜的后人是树的根。
最年轻的一代代表叶子的汇合。
树也可以代表你上班的公司中的高低级相关。
这样您就可以找出谁是您的下级以及您应该治理谁。
个性
二叉树是一种不凡类型的树:每个顶点最多可以有两个子节点。
在严厉二叉树中,除了叶子之外,每个节点都有两个孩子。
具备 n 层的完整二叉树具备一切2ⁿ-1 个或许的节点。
二叉搜查树是一棵二叉树,其中节点的值属于一个齐全有序的汇合——任何恣意选用的节点的值都大于左子树中的一切值,而小于右子树中的一切值。
它们是做什么用的?
BT 的一项关键运行是逻辑表白式的示意和评价。
每个表白式都可以合成为变量/常量和运算符。
这种表白式书写方法称为逆波兰示意法 (RPN)。
这样,它们就可以构成一个二叉树,其中外部节点是运算符,叶子是变量/常量——它被称为形象语法树(AST)。
BST 经常经常使用,由于它们可以极速搜查键属性。
AVL 树、红黑树、有序集和映射是经常使用 BST 成功的。
个性
BST 有三种类型的 DFS 遍历:
一切这些类型的树都是自平衡二叉搜查树。
不同之处在于它们以对数期间平衡高度的方式。
AVL 树在每次拔出/删除后都是自平衡的,由于节点的左子树和右子树的高度之间的模块差异最大为 1。
AVL 以其发明者的名字命名:Adelson-Velsky 和Landis。
在红黑树中,每个节点存储一个额外的代表色彩的位,用于确保每次拔出/删除操作后的平衡。
在 Splay 树中,最近访问的节点可以极速再次访问,因此任何操作的摊销期间复杂度依然是 O(log n)。
它们是做什么用的?
AVL 仿佛是数据库实践中最好的数据结构。
RBT(红黑树) 用于组织可比拟的数据片段,例如文本片段或数字。
在 Java 8 版本中,HashMap 是经常使用 RBT 成功的。
计算几何和函数式编程中的数据结构也是用 RBT 构建的。
在 Windows NT 中(在虚构内存、网络和文件系统代码中),Splay 树用于缓存、内存调配器、渣滓搜集器、数据紧缩、绳索(交流用于长文本字符串的字符串)。
个性
最小堆是一棵二叉树,其中每个节点的值都大于或等于其父节点的值:val[par[x]]