文章

133

粉丝

0

获赞

0

访问

13.6k

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


评分及理由

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

得分:2分

理由:学生提出了使用快速排序对整个数组进行排序,然后从中间划分的思路。这个思路能够满足题目要求(|n1-n2|最小且|S1-S2|最大),因为排序后最小的⌊n/2⌋个元素放在A1,其余放在A2确实能达到要求。但是,题目要求"尽可能高效的划分算法",而标准答案使用的是基于快速选择思想的部分划分算法,时间复杂度为O(n),比学生使用的完整快速排序O(nlogn)更高效。学生没有采用更优化的部分划分方法,因此扣2分。

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

得分:5分

理由:学生的代码实现存在以下问题:

  • 实现了完整的快速排序,而不是更高效的部分划分算法(-2分)
  • partition函数中的递归调用有逻辑错误:quicksort(A, pivotpos, high) 应该是 quicksort(A, pivotpos+1, high)(-1分)
  • 在func函数中,A2数组的赋值有逻辑错误:A2[n-i-1]=A[i] 应该是 A2[i-size1]=A[i](-1分)
  • 代码没有计算和返回S2-S1的值,而题目要求满足|S1-S2|最大(-1分)

代码的基本框架和快速排序实现基本正确,但上述逻辑错误影响了算法的正确性。

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

得分:2分

理由:学生正确分析了算法的时间复杂度O(nlogn)和空间复杂度O(n),这与他们实现的完整快速排序算法相符。

题目总分:2+5+2=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发