Table of contents
-
- 判断题
- 单选题
-
-
- 1.有组记录的排序码为{33,65,74,26,49,12,50,86},则利用堆排序的方法建立的初始堆(大顶堆)为( )
- 2.已知普通表达式`c/(e-f)*(a+b)`,对应的后缀表达式是( )
- 3.排序算法的效率,选择排序的时间复杂度为▁▁▁▁▁ 。
- 4.一棵完全二叉树上有2020个结点,其中度为2的结点的个数是( )
- 5.可以用( )定义一个完整的数据结构。
- 6.设数组 S[ ]={93, 946, 372, 9, 146, 151, 301, 485, 236, 327, 43, 892},采用最低位优先(LSD)基数排序将 S 排列成升序序列。第 1 趟分配、收集后,元素 372 之前、之后紧邻的元素分别是:
- 7.向一个有150个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动元素的次数为( )。
- 8.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[6,5]=( )。
- 9.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶元素所在的下标,栈1的底在v[1],栈2的底在V[m],则栈满的条件是( )。
- 10.使用 Dijkstra 算法求下图中从顶点 1 到其余各顶点的最短路径,将当前找到的从顶点 1 到顶点 2、3、4、5 的最短路径长度保存在数组 dist 中,求出第二条最短路径后,dist 中的内容更新为:
- 11.设主串 T = `abaabaabcabaabc`,模式串 S = `abaabc`,采用 KMP 算法进行模式匹配,到匹配成功时为止,在匹配过程中进行的单个字符间的比较次数是:
- 12.下图为一个AOV网,其可能的拓扑有序序列为:
-
- 知识点
判断题
1.无向连通图至少有一个顶点的度为1。
T | F |
---|
解析:如三个顶点三条边连成一个三角形的图每个顶点度为2
- 无向图只有连通图,有向图只有强连通图。
- 任一顶点出发进行一次深度优先搜索可访问所有顶点,说明任意两个结点连通,为连通图。
2.采用递归方式对顺序表进行快速排序,每次划分后,先处理较短的分区可以减少递归次数。
T | F |
---|
解析:递归次数,取决于递归树,而递归树取决于轴枢的选择。树越平衡,递归次数越少。而对分区的长短处理顺序,影响的是递归时对栈的使用内存,而不是递归次数。
3.在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个元素。
T | F |
---|
解析:映射到同一散列地址的关键字称为同义词。
4.对N个记录进行堆排序,需要的额外空间为O(N)。
T | F |
---|
解析:堆排序仅需一个记录大小供交换用的辅助存储空间,所以空间复杂度为 O ( 1 ) O(1) O(1)
5.如果 e 是有权无向图 G 唯一的一条最短边,那么边 e 一定会在该图的最小生成树上。
T | F |
---|
解析:给定带权无向连通图G,任意一条边e∈G且有e为G中权值最小的边(或之一),则存在一个G的最小生成树G’使e∈G’。这个命题是真的。证明可以直接借用Kruskal算法的正确性,因为选取某个权值最小边的操作正是Kruskal算法的第一步操作,你爱挑哪个都行,所以一定存在一个最小生成树包含某个最小边。
6.Prim 算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树。
T | F |
---|
解析:
- prim算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树
- Kruskal 算法是维护一个森林,每一步把两棵树合并成一棵
单选题
1.有组记录的排序码为{33,65,74,26,49,12,50,86},则利用堆排序的方法建立的初始堆(大顶堆)为( )
选项 | |
---|---|
A | 86,65,74,33,49,12,50,26 |
B | 86,74,65,49,33,12,50,26 |
C | 12,26,65,33,49,74,86,50 |
D | 12,26,33,65,49,74,50,86 |
解释:如果堆的有序状态因为某个节点变得比它的父节点更大而打破,那么就需要通过交换它和它的父节点来修复堆。从最后一个非叶结点逐渐往上浮,直到有序。
2.已知普通表达式c/(e-f)*(a+b)
,对应的后缀表达式是( )
选项 | |
---|---|
A | ef-c/ab+* |
B | c/e-f*a+b |
C | cef-/ab+* |
D | cef/-ab*+ |
解释:
给出一个中缀表达式:c/(e-f)*(a+b)
第一步:按照运算符的优先级对所有的运算单位加括号:式子变成了:((c/(e-f))*(a+b))
第二步:转换前缀与后缀表达式
前缀:把运算符号移动到对应的括号前面
则变成了:*(/(c-(ef))+(ab))
把括号去掉: */c-ef+ab
前缀式子出现
后缀:把运算符号移动到对应的括号后面
则变成了:((c(ef)-)/(ab)+)*
把括号去掉: cef-/ab+*
后缀式子出现
3.排序算法的效率,选择排序的时间复杂度为▁▁▁▁▁ 。
选项 | |
---|---|
A | O ( n n ) O(n\sqrt{n}) O(nn) |
B | O ( n l o g 2 n ) O(nlog_{2}n) O(nlog2n) |
C | O ( n 2 ) O(n^{2}) O(n2) |
D | O ( 2 n ) O(2^n) O(2n) |
解释:
选择排序(Selection sort)是