文章

133

粉丝

1

获赞

100

访问

32.0k

头像
2011年(408)计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年11月18日 21:11
阅读数 4


评分及理由

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

学生给出的基本设计思想是使用双指针法,通过比较两个序列的元素大小来移动指针,并记录移动次数,当移动次数达到总长度一半时停止。这种方法在思路上与标准答案不同,但确实是解决两个有序序列中位数问题的一种可行方法(类似于归并排序的合并过程)。不过,该方法的时间复杂度为O(n),而题目要求尽可能高效,标准答案的O(log₂n)更优。由于思路正确但不满足"尽可能高效"的要求,扣1分。得分:3分。

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

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

  1. 变量i和j未初始化,会导致未定义行为
  2. count变量未初始化
  3. 1/2*(len1+len2)在C语言中会先计算1/2得到0,再乘以总长度,结果始终为0
  4. 循环条件count != 0会导致无限循环
  5. 输出语句格式错误,缺少右括号
  6. 函数没有返回值,题目要求返回中位数
  7. 当flag=2时,输出A[j-1]而不是B[j-1],逻辑错误
  8. 没有考虑中位数的精确定义,直接输出单个元素

这些逻辑错误表明代码无法正确运行,扣分较多。但核心的双指针思路是正确的。得分:3分。

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

学生正确分析了时间复杂度为O(n)和空间复杂度为O(1),这与其实现代码的性能特征一致。虽然不如标准答案高效,但分析正确。得分:2分。

题目总分:3+3+2=8分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发