文章
63
粉丝
0
获赞
0
访问
4.6k

评分及理由
(1)得分及理由(满分4分)
得分:0分
理由:学生的基本设计思想是使用归并排序将两个序列合并后直接取中间位置的元素。这种方法虽然正确,但不符合题目要求的"在时间和空间两方面都尽可能高效"的要求。标准答案采用的是二分查找思想,时间复杂度为O(log₂n),而学生的归并方法时间复杂度为O(n),在效率上不如标准答案。此外,学生没有理解中位数的精确定义,在合并后的数组中取第l个元素(从0开始计数)存在位置错误。
(2)得分及理由(满分9分)
得分:3分
理由:代码实现存在多处逻辑错误:
1. 数组长度计算错误:sizeof(A)在函数参数中返回的是指针大小,不是数组长度
2. 循环条件错误:使用i <= l和j <= l会导致数组越界,应该是i < l和j < l
3. 中位数位置错误:输出C[l]不正确,应该是C[n-1](从0开始计数)
4. 辅助数组大小设置不合理:C[2*l+1]过大
5. 函数没有返回值,直接输出结果
加分点:归并排序的基本逻辑正确,能够完成两个有序序列的合并。
(3)得分及理由(满分2分)
得分:1分
理由:正确指出了时间复杂度为O(n),但没有分析空间复杂度。空间复杂度应为O(n),因为使用了辅助数组C。
题目总分:0+3+1=4分
登录后发布评论
暂无评论,来抢沙发