文章

179

粉丝

0

获赞

0

访问

8.0k

头像
2011年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月25日 20:16
阅读数 40


评分及理由

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

学生给出的基本设计思想是:利用两个指针i和j分别遍历序列A和B,比较A[i]和B[j]的大小,每次将较小值的指针后移一位,直到移动总次数达到n(即找到合并后序列的第n个元素),该元素即为中位数。这种方法虽然能够找到中位数,但时间复杂度为O(n),而题目要求尽可能高效,标准答案采用二分思想可以达到O(log₂n)的时间复杂度。学生的思路正确但并非最优,根据评分要求“思路正确不扣分”,但题目要求“时间和空间两方面都尽可能高效”,学生的算法在时间效率上未达到最优,因此扣1分。得分:3分。

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

学生根据设计思想给出了代码实现,但存在逻辑错误:

  • 在while循环中,当A[i] < B[j]时只移动i指针,当A[i] >= B[j]时只移动j指针,但未考虑A[i] == B[j]的情况。虽然题目中序列为升序,但相等时任意移动一个指针均可,但代码逻辑未明确处理,可能影响可读性,但不算严重错误。
  • 主要错误在于循环结束后直接比较A[i]和B[j]并返回较小值。例如,若A=[1,3,5]、B=[2,4,6]、n=3,循环结束时i=2、j=1(A[2]=5、B[1]=4),返回min(5,4)=4,但实际中位数应为合并后第3个元素(即3)。错误原因是指针移动后未记录当前比较的较小值,导致最终定位错误。这是一个严重的逻辑错误,扣4分。
  • 代码注释缺失,但题目要求“关键之处给出注释”,学生未提供任何注释,扣1分。

综上,代码逻辑错误扣4分,注释缺失扣1分,剩余得分:4分。

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

学生正确分析了时间复杂度O(n)和空间复杂度O(1),但未指出其算法并非最优。根据评分要求,分析正确不扣分。得分:2分。

题目总分:3+4+2=9分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发