文章

96

粉丝

12

获赞

0

访问

24.5k

头像
2016年(408)计算机学科专业基础综合试题 - 第43题回答
数据结构
发布于2025年12月9日 04:14
阅读数 11


评分及理由

(1)得分及理由(满分4分)

得分:3分

理由:学生的基本设计思想与标准答案基本一致,都采用了快速选择(快速排序思想)来找到第 n/2 小的元素,从而将最小的 ⌊n/2⌋ 个元素划分到 A1,其余划分到 A2,以满足 |n1-n2| 最小且 |S1-S2| 最大。但学生的描述中存在一处明显的逻辑错误:在第一次识别结果中,学生写道“要求: 两集合|n1-n2|最小且|s1-s2|最大。首先: 满足|n1-n2|最小...同时要: 两品|s1-s2|尽可能最大”,这里“两品”应为“两集合”,属于识别错误,不扣分。然而,在第二次识别结果中,学生开头写道“要满足|s1 - s2|最小且|s1 - s2|最大”,这显然是矛盾的(同一个表达式不可能同时最小和最大),属于对题目要求的表述错误。根据上下文,可以推断学生想表达的是“|n1-n2|最小且|s1-s2|最大”,但此处的表述不严谨,属于逻辑错误,因此扣1分。其余部分思路正确。

(2)得分及理由(满分9分)

得分:8分

理由:学生的代码实现了快速选择算法,核心逻辑与标准答案一致,能够正确找到第 k(k=n/2)小的元素,并基于此划分数组。代码结构清晰,关键步骤有体现。但存在以下问题:
1. 在函数 Find 中,变量 s1 未初始化(int s1, s2 = 0; 只初始化了 s2,s1 是未定义值),这会导致求和结果错误,属于逻辑错误,扣1分。
2. 代码中缺少对 quickSelect 函数中 pivotPos 变量的类型声明(第一次识别结果中缺失 int,第二次识别结果中已补全),根据“两次识别只要一次正确则不扣分”的原则,此处不扣分。
3. 算法整体正确,实现了所需功能。

(3)得分及理由(满分2分)

得分:1分

理由:学生给出的时间复杂度为 O(nlogn),空间复杂度为 O(logn)。但基于快速选择算法(类似快速排序的划分思想),其平均时间复杂度应为 O(n),最坏情况为 O(n²)。标准答案中强调平均复杂度为 O(n)。学生给出的复杂度分析不够准确(偏高),因此扣1分。空间复杂度 O(logn) 对于递归实现的快速选择是合理的。

题目总分:3+8+1=12分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发