收藏 分销(赏)

2025年大学(工学)工学专业期末测试题及解析.doc

上传人:cg****1 文档编号:12968018 上传时间:2025-12-30 格式:DOC 页数:7 大小:23.59KB 下载积分:10.58 金币
下载 相关 举报
2025年大学(工学)工学专业期末测试题及解析.doc_第1页
第1页 / 共7页
2025年大学(工学)工学专业期末测试题及解析.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
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. 下列关于数据结构的说法,正确的是( ) 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; else 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)和广度优先搜索(BFS)的区别,并说明它们各自适用于什么场景。 w10. (10分)已知一个带权有向图G=(V,E),其中V={v1,v2,v3,v4},E={<v1,v2,3>,<v1,v3,5>,<v2,v3,2>,<v2,v4,6>,<v3,v4,4>},请用Dijkstra算法求从v1到其他各顶点的最短路径。 w11. (10分)什么是平衡二叉树?简述平衡二叉树的插入和删除操作的基本思想。 阅读以下材料,回答问题。 材料:有一个工程,包含A、B、C、D、E五个任务,它们之间的先后关系如下:A完成后才能开始B和C;B和C都完成后才能开始D;D完成后才能开始E。每个任务所需时间分别为:A:3天,B:2天,C:4天,D:3天,E:2天。 w12. (15分)请画出该工程的AOE网,并计算完成整个工程所需的最短时间。 阅读以下代码,回答问题。 ``` include <stdio.h> void merge(int arr[], int left, int mid, int right) { int n1 = mid - left + 1; int n2 = right - mid; int L[n1], R[n2]; for (int i = 0; i < n1; i++) 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++; } 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 + (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)是沿着一条路径尽可能深地探索,直到无法继续或达到目标,然后回溯。广度优先搜索(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,长度为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)。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服