徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解.docx
《徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解.docx》由会员分享,可在线阅读,更多相关《徐士良《计算机软件技术基础》(第4版)笔记和课后习题详解.docx(298页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录内容简介目录第1章预备知识1.1 复习笔记1.2 课后习题详解第2章基本数据结构及其运算2.1 复习笔记2.2 课后习题详解第3章查找与排序技术3.1 复习笔记3.2 课后习题详解第4章资源管理技术4.1复习笔记42课后习题详解第5章数据库设计技术5.1 复习笔记5.2 课后习题详解第6章编译技术概述6.1 复习笔记6.2 课后习题详解第7章应用软件设计与开发技术7.1 复习笔记7.2 课后习题详解第1章预备知识1.I复习笔记、集合基本概念集合是指若干个或无穷多个具有相同属性的元(元素)的集体。通常,个集合名称用大 写字母表示,而集合中的某个元素用小写字母表示。如果集合M由n (n0)个元
2、素a“& ,a”组成,则称集合M为有限集。如果个集合中有无穷多个元素,则称此集合为无 限集。不包括任何元素的集合称为空集。空集通常用表示。如果M是个集合,a是集 合M中的一个元素,则记作aGM,称元素a属于集合M;如果a不是集合M中的元素,则记 作aM,称元素a不属于集合M。(1)列举法用列举法表示一个集合是将此集合中的元素全部列出来,或者列出若干项但能根据规律可 知其所有的元素。例如:大于1而小于100的所有整数的集合A可以表示为A=2, 3, 4, ., 99(2)性质叙述法用性质叙述法表示一个集合是将集合中的元素所具有的属性描述出来。例如:大于1而小于100的所有整数的集合A可以表示为A
3、=a| la 10()的所有整数设M与N为两个集合,若M中的每个元素也为N的元素,则称M为N的子集,记作MUN, 若MUN且N中至少有一个元素aM,则称M为N的真子集,记作MuN。基本运算(1)两个集合的并设有两个集合M和N,它们的并集记作M UN,定义如下: MUN=a|aCM 或 aN(2)两个集合的交 设有两个集合M和N,它们的交集记作MAN,定义如下:MDN=a| aWM且aGN 两个集合M和N的并、交均满足交换律,即M U N=N U M MnN=NDM (3)两个集合的差设有两个集合M和N,它们的差集记作M-N,定义如下:M-N=a|aCNHllaN 两个集合的差不满足交换律,即M
4、-N 声N-M 对于集合的并、交、差有以下几点基本性质: 结合律(acib) nc=An (Bnc)(AUB) UC=AU (BUC)分配律AD (BUC) = (ACIB) U (AClC)AU (Bnc) = (AUB) n (AUC)(A-B)Uk)时,那么它含有所有的自然数,即M是自然数集。笛卡儿积0! x D2 X X D = (,)I d, e D,U = 1,2,”设有n个集合D“ D2, ., D,此n个集合的笛卡儿积定义为其中(4,d)称为n元组,d称为n元组的第i个分量。由笛卡儿积的定义可以看出,n个集合的笛卡儿积是以n元组为元素的集合,而每个n元 组中的第i个分量取自于第
5、i个集合D,。二元关系(1)笛卡儿积设M和N是两个集合,则其笛卡儿积MxN=(x, y)|xGNyGN)其中每个子集称为在MxN上的个二元关系。如果M = N,则其笛卡儿积MxM=(x, y) I x, yM其中每个子集称为在集合M上的个二元关系,简称为在集合M上的一个关系。(2)前后件、自反、对称与传递设R是集合M上的一个关系:如果(a, b) GR1则称a是b的关于R的前件,b是a的关于R的后件;如果对于每个aCM,都有(a, a) CR,则称关系R是自反的:如果对于任何aM, (a, a) GR均不成立,则称关系R是非自反的;如果(a, b) CR时必有(b, a) GR,则称关系R是对
6、称的;如果当(a, b) WR且(b, c) eR时必有(a, c) eR,则称关系R是传递的。(3)基与传递体设R是M上的个传递关系,且TUR,若对于任何(x, y) GR,在M中有元素x。,x., x2 ,x (nl)满足: Xo=X; xn=y;(x Xi) GT (i=l, 2, n)则称关系T是关系R的基,又称关系R是关系T的传递体。基本概念算法是指解题方案准确而完整的描述。算法具有如下基本特征:(1)能行性算法的能行性包括以下两个方面:算法中的每个步骤必须能够实现;算法执行的结果要能够达到预期的目的。(2)确定性算法的确定性,是指算法中的每一个步骤都必须有明确的定义,不允许有模棱两
7、可的解释 ,也不允许有多义性。(3)有穷性算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之 后终止。算法的有穷性还应包括合理的执行时间的含义。(4)拥有足够的情报个算法是否有效,还取决于为算法所提供的情报是否足够。综上所述,算法是组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明 确的,此顺序将在有限的次数内终止。基本方法(1)列举法列举法的基本思想是:根据提出的问题,列举所有可能的情况,并用问题中给定的条件检 验哪些是需要的,哪些是不需要的。列举法的特点是算法比较简单。但当列举的可能情况较多时,执行列举算法的工作量将会 很大,因此需要对算法进行优化。(
8、2)归纳法归纳法的基本思想是,通过列举少量的特殊情况,经过分析,最后找出一般的关系。(3)递推法递推法是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。(4)递归法递归法的基本思想是在解决了逐层分解到最后的那些最简单的问题后,再沿着原来分解的 逆过程逐步进行综合。递归分为直接递归与间接递归两种。如果个算法P显式地调用自己则称为直接递归。如 果算法P调用另个算法Q,而算法Q又调用算法P,则称为间接递归调用。(5)分治法(减半递推技术)分治法,即对问题分而治之。工程上常用的分治法是减半递推技术。减半是指将问题的 规模减半,而问题的性质不变。递推是指重复减半的过程。(6)回溯法通过对问
9、题的分析,找出个解决问题的线索,然后沿着这个线索逐步试探。对于每步 试探,若试探成功,就得到问题的解;若试探失败,就逐步回退,换别的路线再进行试探。复杂度分析算法的复杂度主要包括时间复杂度和空间复杂度。(1)时间复杂度定义算法的时间复杂度是指执行算法所需要的计算工作量。客观地反应算法的效率可以用算法在执行过程中所需基本运算的执行次数来度量算法的 作量。而算法所执行的基本运算次数是问题规模的函数,即算法的工作量f (n)。其中n 是问题的规模。方法在同一问题规模下,如果算法执行所需的基本运算次数取决于某特定输入时,可以用以 下两种方法来分析算法的工作量。a.平均性态平均性态分析是指用各种特定输入
10、下的基本运算次数的带权平均值来度量算法的工作量。 设X是所有可能输入中的某个特定输入,P(X)是X出现的概率,t(X)是算法在输入为X 时所执行的基本运算次数,则算法的平均性态定义为A(n) = / pwd”b.最坏情况复杂性W(打)=max(x) 了最坏情况分析是指在规模为n时,算法所执行的基本运算的最大次数。它定义为:(2)空间复杂度个算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以 及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元 以及某种数据结构所需要的附加存储空间。如果额外空
11、间量相对于问题规模来说是常数, 则称该算法是原地工作的。1.2课后习题详解集合M = d” d2 d3,ds, 4上的一个关系R如下:R= (di, d2) , (d2, d&) , (d5, d4) , (di, d5) , (di, th) , (di, d6) , (di, d3 ),(d3, d6)试验证Ti= (d, d2) , (d2, 0(), (di, d3) , (&, &) , (d5, &) , (di, d5) 是 R的具有6个元素的基,而T2= (d2, d4) , (di, d3) , (di, d2) , (ds, ds) 不是R的 基。答:对于T”显然满足TR,
12、且对于关系R中的每一个二元组(x, y),在M中存在元素RX0,2(,)d , dz(di,dz)Ti(dz,)dz 9d4(,)6%(ds,)d$ 9 d4(,)6。(dltd5)di0,4)Ti(dt,d.)d 9 dz, d(.d ydz) Cdz ,d&) W T(,)(,),(,)er(,&)d !6?3(4,4)GT】(4,)4(,)Xo, Xi, X2, ., X,满足基的三个条件。验证过程如下:由上可知,是R的具有6个元素的基。对于T”由于(do, ds) 0R,因此,T2不是R的基。设给定三个整数a, b, c,试写出寻找其中数的个算法(用C/C+描述),并分析在平 均情况与
13、最坏情况下,算法分别要进行多少次比较?答:算法的C+描述如下:/chl.qjpincludeciostreanusing namespace std;int mid(int a,int b,int c)(intm;m=a;,吁页设a为中数if(m=b)(if(m=c)(if(b=c) m=b; /b 为中数else m=c; c 为中数)else(if(m-c) m=ci c 为中数else m=b; /b 为中数)return (m);j返回中数假设a, b, c中的每一个数为中数的概率相等(均为1/3)。由于当a为中数时需要比较2次2X(l/3)+3X(l/3)+3X(l/3) = 8/3
14、,b或c为中数时均需要比较3次,因此,在平均情况下上述算法所需要的比较次数为即在平均情况下,上述算法需要比较(8/3)次。在最坏情况下,上述算法需要比较3次(当b或c为中数时)。主函数例如下:intmain()(int a,b,c;cout input 丄 b,c=;cinabc;coutm=mid(a,b,c)endl;return 0;运行结果如下(带有下划线的为键盘输入):input a,b,c=4 8 3m=4利用减半递推技术,写出求长度为n的数组中最大元素的递归算法(用C/C+描述)。设n =2k,其中kNl。答:利用减半递推技术,求数组中最大元素的递归过程如下:如果数组中只有一个元
15、素, 则该元素即是数组中最大的元素。否则将数组对分为前半部分和后半部分:用同样的方法求数组前半部分的最大值maxi。用同样的方法求数组后半部分的最大值max 2若maxlmax2,则maxi为数组中的最大值;否则max2为数组中的最大值。算法的C+描述如下:chl_2.cpp?mcludeusing namespace std;int maxa(int a,int m,int n)(intd5dl,d2;if(m=n) return (am-l);else(d 1 =maxa( a1ms (m-n) 2);d2=maxa(a,(m*n),2+l sn);if(dld2)d=dl;elsed=d
16、2;return (d);主函数例如下:int main()(mt a( 16 卜15,6,4“ 521,737851.40 6,43,49,6327; coutmax-maxa(i, 1,16)ajdl,return 0;)运行结果如下:max=78编写二分法求方程实根的减半递推算法(用C/C+描述)。/chl_3.cpp include mclude using namespace std;double root(double a,double bdouble eps, double (*f)(double) (doublewhile( fabs( a-b)=eps) (c=(a*b) 2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件技术基础 徐士良 计算机软件 技术 基础 笔记 课后 习题 详解
限制150内