1、 2025年大学(工学)工学专业期末测试题及解析 (考试时间:90分钟 满分100分) 班级______ 姓名______ 第 I 卷(选择题,共40分) 每题给出的四个选项中,只有一项是符合题目要求的。(总共8题,每题5分,每题只有一个正确答案,请将正确答案填写在括号内) 1. 以下哪种算法设计策略常用于解决动态规划问题?( ) A. 分治法 B. 贪心算法 C. 回溯法 D. 最优子结构 2. 对于一个具有n个顶点的无向连通图,其最小生成树的边数为( ) A. n B. n - 1 C. n + 1 D. 2n 3. 下列关于数据
2、结构的说法,正确的是( ) A. 栈是一种先进先出的数据结构 B. 队列是一种后进先出的数据结构 C. 线性表只能采用顺序存储结构 D. 树是一种非线性数据结构 4. 已知一棵完全二叉树有768个结点,则该二叉树中叶结点的个数是( ) A. 257 B. 258 C. 384 D. 385 5. 以下排序算法中,平均时间复杂度为O(nlogn)的是( ) A. 冒泡排序 B. 选择排序 C. 快速排序 D. 插入排序 6. 若有一个递归算法如下: ``` int f(int n) { if (n == 0) return 1; el
3、se return n f(n - 1); } ``` 则计算f(5)时,函数调用的次数为( ) A. 5 B. 6 C. 7 D. 8 w7. 对于一个有向图,其拓扑排序的结果( ) A. 是唯一的 B. 是不唯一的 C. 一定存在 D. 可能不存在 8. 以下关于哈希表的说法,错误的是( ) A. 哈希表通过哈希函数将关键字映射到存储位置 B. 哈希表可能会出现哈希冲突 C. 解决哈希冲突的方法有开放定址法和链地址法等 D. 哈希表的查找效率一定比顺序查找高 第 II 卷(非选择题,共60分) w9. (10分)简述深度优先搜索(DFS)
4、和广度优先搜索(BFS)的区别,并说明它们各自适用于什么场景。
w10. (10分)已知一个带权有向图G=(V,E),其中V={v1,v2,v3,v4},E={
5、务所需时间分别为:A:3天,B:2天,C:4天,D:3天,E:2天。
w12. (15分)请画出该工程的AOE网,并计算完成整个工程所需的最短时间。
阅读以下代码,回答问题。
```
include
6、 L[i] = arr[left + i]; for (int j = 0; j < n2; j++) R[j] = arr[mid + 1 + j]; int i = 0, j = 0, k = left; while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++;
7、 } k++; } while (i < n1) { arr[k] = L[i]; i++; k++; } while (j < n2) { arr[k] = R[j]; j++; k++; } } void mergeSort(int arr[], int left, int right) { if (left < right) { int mid = left +
8、 (right - left) / 2; mergeSort(arr, left, mid); mergeSort(arr, mid + 1, right); merge(arr, left, mid, right); } } ``` w13. (15分)这段代码实现的是什么排序算法?请简述该算法的基本思想,并分析其时间复杂度。 答案: 1. D 2. B 3. D 4. D 5. C 6. B 7. B 8. D 9. 深度优先搜索(DFS)是沿着一条路径尽可能深地探索,直到无法继续或达到目标,然后
9、回溯。广度优先搜索(BFS)是逐层地探索,先访问距离起始点近的节点。DFS适用于求解深度相关问题,如迷宫路径探索。BFS适用于求最短路径等问题,因为它能按层次找到最短距离。 10. 用Dijkstra算法求解: 初始:dist[v]= {inf, 0, inf, inf},pre[v]= {-1, -1, -1, -1} 第一轮:更新dist[v2]=3,pre[v2]=v1 第二轮更新dist[v3]=5,pre[v3]=v1 第三轮更新dist[v4]=9,pre[v4]=v2 第四轮更新dist[v4]=7,pre[v4]=v3 所以从v1到v2最短路径为v1 - v2,长
10、度为3;到v3最短路径为v1 - v3,长度为5;到v4最短路径为v1 - v2 - v4,长度为7。 11. 平衡二叉树是左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。插入操作:插入新节点后,从插入点到根节点的路径上的节点可能失衡,通过左旋、右旋和左右旋等调整操作使树重新平衡。删除操作:删除节点后,同样从删除点到根节点的路径上的节点可能失衡,进行类似插入操作的调整来恢复平衡。 12. AOE网: A(3) -> B(2) -> D(3) -> E(2) -> C(4) 关键路径为A - B - D - E,长度=3 + 2 + 3 + 2 = 10天,所以完成整个工程最短时间是10天。 13. 这段代码实现的是归并排序算法。归并排序的基本思想是将一个数组分成两个子数组,对两个子数组分别进行排序,然后将排序好的子数组合并成一个有序的数组。其时间复杂度为O(nlogn),因为每次将数组分成两半,共需要logn次,每次合并操作时间复杂度为O(n),所以总体时间复杂度为O(nlogn)。






