gesp五级-2026年3月

欢迎参加本次编程理论考试,请认真作答以下题目。
1. 您的姓名:
2. 您的部门:
一、单选题(每题2分,共30分)
3. 关于单链表、双链表和循环链表,下列说法正确的是
4. 双向循环链表中要在结点p之前插入新结点s(均非空),以下指针操作正确的是
5. 下面函数用“哑结点”统一处理删除单向链表中的头结点与中间结点,横线处应填
6. 对如下代码实现的欧几里得算法(辗转相除法),执行gcd(48, 18)得到的调用序列为
7. 下面代码实现了欧拉(线性)筛,横线处应填写
8. 埃氏筛中将内层循环从j = i*i开始而不是j = 2*i的主要原因是
9. 下面程序的运行结果为
10. 在升序数组中查找第一个大于等于x的位置,下面循环中横线应填
11. 关于递归函数调用,下列说法错误的是
12. 给定n根木头,第i根长度为a[i]。要切成不少于m段等长木段,求最大可能长度,则横线上应填写
13. 下面代码用分治求“最大连续子段和”,其时间复杂度为
14. 游戏大赛决赛,两组选手分别按得分从小到大排好队,现在要把他们合并成一个有序排行榜。A组:A={12,35,67,89},B组:B={20,45,55,78},下面是归并合并函数的核心循环,横线处应填入
15. 有n位同学的成绩已经从小到大排好序,现在对它执行下面这段以第一个元素为pivot的快速排序,请问此次排序的时间复杂度是
16. 下面关于排序算法的描述中,不正确的是
17. 下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用int表示,则横线处应该填写
二、判断题(每题2分,共20分)
18. 有一个存储了n个整数的线性表,分别用数组和单链表两种方式实现。在已知下标(或结点指针)的前提下,数组的随机访问是O(1),而在链表中已知某结点的指针时,在该结点之后插入一个新结点的操作也是O(1)
19. 若数组a已按升序排列,则下面代码可以正确实现“在a中查找第一个大于等于x的元素的位置”
20. 快速排序只要每次都选取中间元素作为枢轴,就一定是稳定排序
21. 若某算法满足递推式T(n) = 2T(n/2) + O(n),则其时间复杂度为O(n log n)
22. 在一个数组中,如果两个元素a[i]和a[j]满足i < j且a[i] > a[j],则a[i]和a[j]是一个逆序对。下面代码可以正确统计数组a区间[l,r]内的逆序对总数
23. 根据唯一分解定理,如果大于1的整数n不被任何不超过其平方根的质数整除,则n是质数
24. 假设数组a的值域范围是D ,以下程序的时间复杂度是O(nlogn +nlogD)

 

25. 若一个问题满足最优子结构性质,则一定可以用贪心算法得到最优解
26. 线性筛相比埃氏筛的核心改进在于:埃氏筛中一个合数可能被多个质数重复标记,线性筛通过“每个合数只被其最大质因子筛去”的策略,保证每个合数恰好被标记一次,从而实现O(n)的时间复杂度
27. 任何递归程序都可以改写为等价的非递归程序,但改写后的非递归程序一定需要显式地使用栈来模拟递归调用过程
更多问卷 复制此问卷