一、排序
1、快速排序
例题1:在快速排序算法中,对n个数进行排序,平均情况下时间复杂度为()
A、O(n) B、O(n²) C、 D、O()
试题解析:
二、图
1、活动图
例题1:某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动的持续时间(天),则活动D-H的松他时间为()天
(A) 1 (B) 2 (C) 3 (D) 0
试题解析:
项目的最短完成时间就是总工期,也就是求关键路径上活动的总时长,关键路径就是所有路径中最长的一条,经过计算得出关键路径为A-B-D-H-I,工期为21天。故第问正确答案为C。松弛时间又称为浮动时间,自由时间等,是指在不影影响整个工期的前提下,完成该任务有多少机动余地,也就是说该活动最晚可以推迟多长时间开始而不会耽误项目的工期。关键路径上所有活动的松他时间是0,由于活动D-H在关键路径上,所以其松他时间为0,故第二问正确
答案为D
例题2:下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,则完成该项目的最少时间为(问题1)天。活动E-H的松他时间为 (问题2)天
问题1选项:(A) 17 (B) 19 (C) 20 (D) 22
问题2选项:(A) 3 (B) 4 (C) 5 (D) 6
试题解析:
最少时间就是求项目的关键路径,即所有路径中最长的一条,在该图中有两条路径,分别为ABCEFIKL和ABDGIKL,共计22天。故第一问正确答案为D;第二问其实是计算E->H的松他时间,即在不影响项目进度的前提下,可推迟开始的时间。本题中E->H在所在路径上的工期是2+3+2+4+6=17天,所以松他时间为22-17=5天;故第二问正确答案为C
总结:
关键路径上的活动松弛时间都为0
其他路径上的活动的松弛时间=关键路径时间-该路径完成需要的时间。
三、树
1、二叉树
(1)二叉树的特点:
a.二叉树的结点的最大度为2
b.叶子结点称为终端结点,度为零的结点
c.二叉树中结点的子树要区分左子树和右子树,即使在结点只有一个棵子树的情况下,也要明确指出孩子树是左子树还是右子树。
(2)二叉树的性质:
对于任何一颗二叉树,若终端结点(叶子)数为,度为2的结点数为,则 = +1
四、校验码
1、海明码(Hamming Code):
是由贝尔实验室的Richard Hamming设计的,它也是利用奇偶性来检错和纠错的校验方法。海明码的构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距来实现检错和纠错。
例题:已知数据信息为 16位,最少应附加( )位校验位,以实现海明码纠错。
A、3
B、4
C、5
D、6
答案:C
答案解析:
根据公式 2的k次方 ≥ n+k+1 , n=16 则 K=5
2、寄偶校验码:
只能发现错误,不能矫正错误。采用的是模2运算
3、循环冗余校验码(CRC):
利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。在求CRC编码时,采用的是模2运算。
4、加密和解密
(1)对称加密:对称加密采用了对称密码编码技术,其特点是文件加密和解密使用相同的密钥,这种方法在密码学中称为对称加密算法。常用的对称加密算法有如下几种:DES、三重DES、RC-5、IDEA和AES。
(2)非对称加密:
五、数组
例题1:设数组a[0..n-1,0..m-1](n>1,m>1)中的元素以行为主序存放,每个元素占用4个存储单元,则数组元素a[i,j](0i<n,0j<m)的存储位置相对于数组空间首地址的偏移量为()
(A) (j*m+i)*4 (B) (i*m+j)*4 (C) (j*n+i) *4 (D) (i*n+j)*4
试题解析:
由于a[i,j](0i<n,0j<m)i和j是从0开始的,以行为主序,则a[i,j]前面己经有i行已经排列满,一共
有i*m个元素,在a[i,j]元素所在的行,前有个j个元素,所以a[i,j]前一共有(i*m+j)个元素;每个元素占用4个存储单元,所以a[i,j]相对数组空间首地址的偏移量为(i*m+ j)*4。
六、算法
算法的特性:有穷性、可行性、有输入和输出