第10次课公共基础知识.docx
- 文档编号:26654574
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:20
- 大小:547.51KB
第10次课公共基础知识.docx
《第10次课公共基础知识.docx》由会员分享,可在线阅读,更多相关《第10次课公共基础知识.docx(20页珍藏版)》请在冰豆网上搜索。
第10次课公共基础知识
第七部分公共基础知识
数据结构与算法:
1.1算法的基础概念
算法是指解题方法的准确而完整的描述。
算法的复杂度可分为时间复杂度和空间复杂度,是衡量算法优劣的量度。
1.算法的基本特征:
◆可行性:
算法是可行的。
即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
◆确定性:
算法中每一条指令必须有确切的含义,使算法的执行者或阅读者都能明确其含义及如何执行,不存在二义性。
并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入,只能得出相同的输出。
◆有穷性:
一个算法在执行一段时间后结束,不是无止境地执行下去。
◆拥有足够的情报:
要使算法有效必需为算法提供足够的情报。
2.算法的设计方法:
列举法、归纳法、递推法、递归法、回朔法
3.算法的设计准则:
准确性、可读性、健壮性、效率与存储量需求
4.算法的复杂度:
◆时间复杂度:
是指执行算法所需要的计算工作量。
如:
在2,3,8,9,10中查找8,则将8分别与此序列中的数据比较。
我们只需要比较3次,所以在此我们做了3次的工作量。
◆空间复杂度:
一般是指执行此算法所需要的内存空间。
(大家将内存空间理解为若干个连续的格子)
5.算法与程序的关系:
算法和程序是两个不同的概念,程序是对算法使用某种程序设计语言的具体实现。
算法必须可终止,因此不是所有的程序都是算法(操作系统是一个程序,而不是一个算法)。
1.2数据结构的基本概念
数据结构是指反映数据元素之间关系的数据集合的表示,即带有结构的数据元素之间的前后件关系。
◆数据的逻辑结构:
数据集合中各数据元素之间所固有的逻辑关系;
◆数据的存储结构:
对数据进行处理时,各数据元素在计算机中的存储关系(数据的逻辑结构在内存中的存放形式)。
1.常见数据结构:
2.常用数据的存储结构:
◆顺序存储方式
◆链式存储方式
◆索引存储方式
◆散列存储式
3.线性结构与非线性结构:
根据结构中各数据元素之间前后件关系的复杂程度,将数据结构分为两个类型:
线性结构和非线性结构。
◆线性结构:
在数据元素的非空有限集中,线性结构有如下特征:
①存在惟一的一个被称作“第一个”的数据元素。
②存在惟一的一个被称作“最生一个”的数据元素。
③除第一个之外,集合中的每个数据元素均只有一个前驱。
④除最后一个之外,集合中的每个数据元素均只有一个后继。
◆非线性结构:
其特征是一个结点可能有多个直接前驱和直接后继,例如,树和图都是非线性结构。
1.3线性表:
线性表是n个数据元素的有限序列。
数据元素可以是一个数,或是一个符号,或是一页书,或是其他更复杂的程序。
1.栈:
栈(Stack)是一种特殊线性表,它只能在表的一端进行插入与删除运算,这一端称为栈顶(Top),另一端称为栈底(Bottom)。
◆栈的顺序存储结构
栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素册时附设指针指示栈顶元素在顺序栈中的位置。
如下图所示。
◆栈的特点:
具有记忆作用,先进后出(后进先出)
2.队列:
队列(Queue)是只允许在一端删除,而在另一端插入的顺序表。
允许插入的一端叫做队尾(Rear),允许删除的一端称为队头(Front)。
◆队列的顺序存储结构:
◆队列的运算:
◆队列的特点:
先进先出
3.循环队列:
◆循环队列的入队过程:
◆循环队列的两种形态:
4.线性链表:
线性链表(也称单链表)是线性表的链式存储结构,其中每个结点由数据域和指针域两部分构成。
如下图所示:
1.4树与二叉树
1.树的定义:
树(Tree)是一种简单的非线性结构。
在树这种数据结构中,所有数据元素之间的关系具有明显的层次特征(如下图所示)。
树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。
每个集合同时又是一棵树,树有且只有1个根结点。
(07.4)
2.二叉树的定义:
二叉树(BinaryTree)是另一种树形结构,它的特点是每个结点至多只有两棵子树,并且二叉树的子树有左右之分,位于左侧的子树叫左子树,位于右册的子树叫右子树,其次序不能颠倒。
◆结点的“度”:
一个结点的子结点数量称为该结点的度。
在一颗二叉树中,存在三种形式的结点,度为0(叶子结点),度为1,度为2。
(特别注意:
在任何二叉树中,度为2的结点比度为0的结点少一个,即:
度为2的结点数=度为0的结点数-1)。
【例题】:
一棵二叉书中共有70个叶子结点与80个度为1的结点,则该二又树中的总结点数为:
219。
◆二叉树的深度:
二叉树的层数。
【例题】:
在深度为5的满二叉树中,叶子结点的个数为16。
◆完全二叉树:
除了最后一层外,每一层的结点数都达到最大值。
◆满二叉树:
除了最后一层外,每一层上的所有结点都有两个子结点。
(没有度为1的结点)
3.二叉树的遍历(06.4,06.9,07.4):
所谓二叉树的遍历,就是遵循某种次序访问二叉树中的所有结点,使得每个结点仅被访问一次。
二叉树的遍历有:
前序遍历、中序遍历、后序遍历。
设有二叉树如下(图一)所示。
则其前、中、后序遍历分别为图二、图三、图四。
图一图二图三图四
【例题】1:
设有如下图所示的二叉树,其前、中、后序遍历分别为:
(1).前序遍历:
A,B,D,G,H,E,I,C,F,J
(2).中序遍历:
G,D,H,B,E,I,A,F,J,C
(3).后序遍历:
G,H,D,I,E,B,J,F,C,A
【例题】2:
设一棵二叉树的中序遍历结果为D、B、E、A、F、C,前序遍历结果为A、B、D、E、C、F,则后序遍历结果为:
D、E、B、F、C、A
1.5查找
1.顺序查找:
顺序查找又称顺序搜索,是指在线性表中查找指定的元素,其基本查找过程如下:
①从表中第一个记录形始,逐个进行记录的关键字和给定值的比较。
②若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;若直至最后一个记录,其关键字和给定值比较都不等,则表明表中没有所查记录,查找不成功。
对于长度为n的线性表,在最坏的情况下,将比较n次。
2.二分法查找:
二分法查找又称折半查找,只适用于顺序存储的有序表,即要求线性表中的结点必须按关键字值的递增或递减顺序排列。
对于长度为n的线性表,在最坏的情况下,将比较log2n次。
由公式我们可以看出,长度在(64,128]内的所有有序线性表,其比较次数均为7。
例如:
在长度为80的有序线性表中进行二分查找,需要的比较次数为7。
1.6排序
排序(Sort)是将一组无序的记录序列调整为有序的记录序列操作。
1.交换排序
◆冒泡排序:
冒泡排序(BubbleSort)的基本思想是:
通过对待排序序列从前向后(从后向前),依次比较相邻元素的大小,若发现违反排序要求则交换,使待排序序列最终满足排序要求。
对于长度为n的线性表,需要比较的次数为:
n(n-1)/2。
冒泡法排序的示意图如图下所示。
◆快速排序:
快速排序(QuickSort)的基本思想是:
任取待排序序列中某个元素作为基准(一般取第一个元素),通过一趟排序,将待排序列分为左右两个子序列,左子序列元素的排序码都小于或等于基准元素的排序码,右子序列的排序码大于基准元素的排序码,然后对两个子序列继续进行类似排列,直到满足排序要求为止。
对于长度为n的线性表,最坏情况下,需要比较的次数为:
n(n-1)/2。
2.插入排序
◆简单插入排序:
简单插入排序是将无序序列中的各元素依次插入到已经有序的线性表中。
对于长度为n的线性表,最坏情况下,需要比较的次数为:
n(n-1)/2。
◆希尔排序:
希尔排序(ShellSort)是先将整个待排序元素序列分割成若干子序列(由相隔某个"增量"的元素组成)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。
因为直接插入排序在元素基本有序的情况下效率很高。
对于长度为n的线性表,最坏情况下,需要比较的次数为:
O(n1.5)。
3.选择排序:
◆简单选择排序:
选择排序(SelectionSort)的基本思想是:
扫描整个线性表,从中找出最小元素,将它交换到线性表的最前面相应位置;然后对其余的子表采用同样的方法,直到全部满足排序要求为止。
对于长度为n的线性表,最坏情况下,需要比较的次数为:
n(n-1)/2。
◆堆排序:
堆排序的适合规模较大的线性表。
在最坏的情况下,对于长度为n的线性表,需要比较O(nlog2n)次。
4.所有排序法的比较
排序法类型
排序方法名称
比较次数(最坏)
适合的数据范围
交换排序
冒泡排序
n(n-1)/2
规模小
快速排序
n(n-1)/2
规模小
插入排序
简单插入排序
n(n-1)/2
规模小
希尔排序
O(n1.5)
模较大
选择排序
简单选择排序
n(n-1)/2
规模小
堆排序
O(nlog2n)
模较大
程序设计基础
2.1程序设计与风格
1.良好程序的要求:
●源程序要文档化
●数据说明次序要规范化
●变量安排有序化
●语句结构简单易懂
●输入输出应方便用户使用
2.2结构化程序设计
1.结构化程序设计原则:
●自顶向下
●逐步求精
●模块化
●限制使用GOTO语句
2.结构化程序的基本结构
●顺序结构
●选择结构(分支结构)
●重复结构(循环结构)
2.3面向对象程序设计
1.面向对象程序设计的优点:
●与人类思维习惯一致
●稳定性好
●可重用性好
●易于开发大型软件产品
●可维护性好
2.面向对象程序设计的基本特点:
●继承性
●多态性
●封闭性
软件工程基础:
3.1软件工程基本概念
1.软件工程的定义:
软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程的主要思想是:
强调在软件开发过程中需要应用工程化原则。
软件工程包括3要素:
方法、工具和过程(07.4)。
2.软件的生命周期
软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生存期。
也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生存期。
软件生存期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
这些活动可以有重复,执行时也可以有迭代,这是软件生存期的一个模型。
根据分析角度不同,还有演化模型、螺旋模型、喷泉模型和智能模型等。
还可以将软件生命周期分为如图上所示的软件定义、软件开发及软件运行维护三个阶段。
3.软件工程的目标
软件工程的目标是,在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
软件工程需要达到的基本目标应是:
◆付出较低的开发成本;
◆达到要求的软件功能;
◆取得较好的软件性能;
◆开发的软件易于移植;
◆需要较低的维护费用;
◆能按时完成开发,及时交付使用。
3.2结构化分析方法
1.软件需求:
用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
2.软件需求分析的任务:
是发现需求、求精、建模和定义需求过程。
3.需求分析阶段的工作:
◆需求获取:
目的是确定对目标系统的各方面需求。
◆需求分析:
对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。
◆编写需求规格说明书:
是需求分析阶段的成果,可以为用户、分析人员和设计人员之间交流提供方便,是控制软件开发进程的依据。
◆需求评审:
对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。
4.需求分析方法:
◆结构化分析方法
◆面向对象的分析方法
注:
也可分为:
静态分析方法、动态分析方法
5.结构化分析工具
●数据流图(DFD,DataFlowDiagram):
是描述数据处理过程的工具,是对需求理解的逻辑模型的图形表示。
主要图形元素如下:
例如:
●数据字典(DD,DataDictionary):
数据字典是结构化分析方法的核心。
是对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对与输入、输出、存储成分和中间计算结果有共同的理解。
通常数据字典包含的信息有:
名称、别名、何处使用/如何使用、内容描述、补充信息等。
例如,对加工的描述应包括:
加工名、反映该加工层次的加工编号、加工逻辑及功能简述、输入/输出数据流等。
在数据字典的编制过程中,常使用定义方式描述数据结构。
下表给出了常用定义符号:
符号
含义
=
表示“等于”,“定义为”,“由什么构成”
[…|…]
表示“或”,及选择括号中“|”号分隔的各项中的某一项
+
表示“与”,“和”
n{}m
表示“重复”,即括号中的项要重复若干次,n,m是重复次数的上下限
(…)
表示“可选”,即括号中的项可以没有
**
表示“注释”
..
连接符
例如,银行取款业务的数据流图中,存储文件“存折”的DD定义如下:
存折=户名+所号+帐号+开户日+性质+(印密)+1{存取行}50
户名=2{字母}24
所号=“001”..“999”
帐号=“00000001”..“99999999”
开户日=年+月+日
性质=“1”..“6”
印密=“0”
存取行=日期+(摘要)+支出+存入+余额+操作+复核
日期=年+月+日
年=“00”..“99”
月=“01”..“12”
日=“01”..“31”
摘要=1{字母}4
支出=金额
金额=“0000000.01”..“9999999.99”
操作=“00001”..“99999”
●判定树:
(举例)
●
判定表:
(举例)
3.3软件的设计
1.
3.4软件测试
1.软件测试的定义:
软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件使命期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试,验证软件是否合格、能否交付用户使用等。
2.软件测试的目的:
◆软件测试是为了发现错误而执行程序的过程;
◆一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;
◆一个成功的测试是发现了至今尚未发现的错误的测试。
3.软件测试的技术与方法:
根据是否需要执行被测软件,可以将软件测试分为静态测试方法和动态测试方法,根据功能,可划分为白盒测试方法和黑盒测试方法。
(1)静态测试
静态测试包括代码检查、静态结构分析、代码质量度量等。
静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
代码检查主要检查代码和设计的一致性,包括代码的逻辑表达的正确性,代码结构的合理性等方面。
代码检查包括代码审查、代码走查、桌面检查、静态分析等具体方式。
静态分析是对代码的机械性、程式化的特性分析方法,包括控制流分析、数据流分析、接口分析、表达式分析。
(2)动态测试
动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。
或者说,是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其页期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
4.软件测试的步骤:
◆单元测试
◆集成测试
◆验收测试(确认测试)
◆系统测试
数据库原理
4.1数据库的基本概念:
1.数据库:
数据库(DataBase),简称DB,是存储在计算机系统内的有结构的数据集合。
2.数据库管理系统:
数据库管理系统(DataBaseManagementSystem),简称DBMS,是数据库系统中对数据库进行管理的软件。
3.数据库系统:
数据库系统(DataBaseSystem),简称DBS,是以数据库应用为基础的计算机系统,包括数据库、数据库管理系统与用户三个部分。
4.数据管理的发展阶段:
人工阶段、文件系统管理阶段、数据库管理阶段、分布式数据库系统阶段、面向对象数据库阶段等。
5.数据库系统的特点:
数据共享(提高信息的利用率)、冗余度低且可控制、数据独立性高、数据的结构化。
6.数据库系统组成:
硬件系统、数据库集合、数据库管理系统、相关软件、数据库管理员、用户。
7.数据库系统的特点:
◆实现数据共享,减少数据冗余
◆采用特定的数据模型
◆具有较高的数据独立性
◆有统一的数据控制功能
8.数据实体间联系的种类:
一对一联系、一对多联系、多对多联系
9.关系型数据库常见术语:
◆元组:
在一个二维表(一个具体关系)中,水平方向的行称为元组(记录),每一行是一个元组。
◆属性:
在一个二维表中,垂直方向的列成为属性,每一列有一个属性名(字段名)。
◆域:
属性的取值范围,即不同元组对同一个属性的取值所限制的范围。
◆关键字:
属性或属性的组合,其值惟一地标识一个元组(主关键字、候选关键字)。
◆外部关键字:
如果表中的一个字段不是本表的主关键字或候选关键字,而是另外一个表的主关键字或候选关键字,这个字段(属性)就称为外部关键字。
◆纽带表:
为了避免数据重复存储,又要保持多对多联系,方法是创建第三个表。
所创建的第三个表包含两个表的主关键字,在两个表之间起着纽带的作用,这种表被称为纽带表。
10.数据库系统的数据模型:
◆关系型:
结构简单,能描述复杂的数据关系,处理效率低。
关系型数据库依靠数据之间的关系而构建。
INFORMIX、CLIPPER、dBase、FoxBase、VisualFoxPro、Access等。
◆层次型:
结构简单,无法描述复杂的数据关系。
◆网状型:
可以描述复杂的数据关系,但使用不便,技术难度较大。
11.关系型数据库的基本运算:
◆选择:
从关系中找出满足给定的条件的元组的操作称为选择。
◆投影:
从关系模式中指定若干个属性组成新的关系称为投影。
◆联接:
将两个关系模式拼接成一个更宽的关系模式,生成新关系中包含满足条件的元组。
◆自然联接:
在联接运算中,按照字段值对应相等为条件进行的联接操作称为等值联接。
自然联接是去掉重复属性的等值联接。
12.数据库系统的三个时代:
第一代(非关系型数据库系统)、第二代(关系型数据库系统)、第三代(对象-关系数据库系统)
13.数据库系统分类:
◆单用户数据库(在同一时间只能供一个人使用)和多用户数据库(在同一时间可以供多个人使用)
◆集中式数据库和分布式数据库
◆传统数据库和智能数据库
14.数据库管理系统的功能:
数据定义功能、数据操作功能、控制和管理功能
4.2E-R模型
1.E-R模型的表示方法:
4.3关系代数
1.关系代数的基本运算:
◆交运算:
关系R与S经交运算后所得到的关系是由那些既在R内又在S内的元素所组成的集合,记作R∩S。
【既属于R又属于S的元组组成的集合,即在两个关系中取相同的的元组】
设有如下关系表:
RST
ABCABCABC
112313112
223112
则T=R∩S
◆并运算:
关系R与S经并运算后所得到的关系是由那些在R内或在S内的元素所共同组成的集合,记作R∪S。
【关系R和关系S的所有元组合并,再删除重复的元组,组成一个新的关系】
设有如下关系表:
RST
ABCABCABC
112313112
223112223
313
则T=R∪S
◆差运算:
关系R和关系S的差是由属于R而不属于S的元组组成的集合,即关系R中删除与关系S中相同的元组,组成一个新的关系,记为:
R-S。
设有如下关系表:
RST
ABCABCABC
112313223
223112
则T=R-S
◆笛卡儿积运算:
对于两个关系的合并操作可以用笛卡儿积表示。
设有n元关系R及m元关系S,它们分别有p、q个元组,则关系R与S经笛卡儿积记为R×S,该关系是一个n+m元关系,元组个数是p×q,由R与S的有序组组合而成。
设关系R和关系S的元素分别是3和4,关系T是R与S的笛卡儿积,即T=R×S,则关系T的元素是7。
◆除运算:
如果将笛卡儿积运算看作乘运算,那么除运算就是它的逆运算。
所以,如果T=R×S,则S=T/R(或S=T÷R)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 公共 基础知识