文章
55
粉丝
0
获赞
2
访问
17.8k

评分及理由
(1)得分及理由(满分4分)
得分:2分
理由:学生的基本设计思想是“将A1和A2合并后排序,然后按中间位置划分”,这与题目要求不符。题目要求的是将给定的一个集合A划分为两个子集,而学生假设A已经分成了A1和A2,这是对题意的误解。但思路中“排序后按中间值划分”在逻辑上能间接达到“|n1-n2|最小且|S1-S2|最大”的目标(因为排序后取前一半最小值和后一半最大值,差值自然最大),所以给部分分数。核心错误在于没有理解输入是单个集合A,而不是已经分好的两个子集。
(2)得分及理由(满分9分)
得分:4分
理由:学生的代码实现了快速排序,但存在以下问题:
1. 代码基于错误的假设(A1和A2已存在),没有实现从原始集合A进行划分的算法。
2. 快速排序的划分函数huafen在第二次识别中缺少A[L] = mid;的恢复步骤(第一次识别中有),这是一个逻辑错误,但可能为识别遗漏,根据“误写不扣分”原则,此处不额外扣分。
3. 代码整体结构是完整的排序和划分,但未满足题目“尽可能高效”的要求(应采用类似快速选择的方法,平均O(n))。
给予4分是因为代码实现了排序和划分的基本逻辑,但整体算法设计不符合题意。
(3)得分及理由(满分2分)
得分:1分
理由:学生给出的时间复杂度O(nlog₂n)和空间复杂度O(n)对于其实现的排序算法是正确的,但并非题目要求的最优复杂度。标准答案要求平均O(n)和O(1),因此扣1分。
题目总分:2+4+1=7分
登录后发布评论
暂无评论,来抢沙发