文章

85

粉丝

0

获赞

2

访问

3.5k

头像
2016年计算机学科专业基础综合试题 - 第43题回答
数据结构
发布于2025年9月8日 16:28
阅读数 6


评分及理由

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

得分:4分

理由:学生的基本设计思想正确,与标准答案一致。通过快速排序的划分思想找到中位数(即第n/2小的元素),将数组划分为前n/2小的元素和剩余元素两部分,满足|n1-n2|最小且|S1-S2|最大的要求。思路清晰,描述准确。

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

得分:7分

理由:

  • 算法实现基本正确,使用了快速排序的划分方法(Partition函数)来定位中位数(第n/2小的元素),然后计算前后两部分的和并返回差值。
  • 但存在以下逻辑错误:
    • 在Partition函数中,内层循环的条件有误:while (low < high && pivot < A[high])while (low < high && pivot > A[low]) 应该改为 while (low < high && pivot <= A[high])while (low < high && pivot >= A[low])(或调整符号方向),否则可能无法正确处理重复元素或导致死循环。标准答案中使用了>=和<=,这里使用了>和<,逻辑不严谨,扣1分。
    • QuickSort函数递归调用时,参数传递正确,但函数名称为QuickSort,实际功能是快速选择(找第k小元素),命名不准确,但属于小问题,不扣分。
    • 函数func中调用QuickSort时,参数k传递n/2,但n为整数时,n/2可能不是整数(例如n为奇数时),但题目要求|n1-n2|最小,因此n/2取整(即⌊n/2⌋)是正确的,此处不扣分。
    • 整体代码结构清晰,关键步骤有注释(学生作答中无注释,但题目要求关键处给出注释,扣1分)。
  • 总计扣2分(逻辑错误扣1分,缺少注释扣1分)。

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

得分:1分

理由:学生正确给出了平均时间复杂度为O(n),但空间复杂度为O(log n)(递归栈深度),而标准答案中空间复杂度为O(1)(使用迭代而非递归)。虽然学生的方法空间复杂度较高,但题目要求“尽可能高效”,且递归实现是常见方法,因此不扣满分,扣1分。

题目总分:4+7+1=12分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发