文章

302

粉丝

0

获赞

15

访问

144.8k

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


评分及理由

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

得分:0分

理由:学生的基本设计思想存在逻辑错误。题目要求找出两个等长升序序列的中位数,而学生提出的方法是通过双指针逐个比较元素并计数,当计数达到特定条件时返回结果。这种方法实际上是在寻找两个序列合并后的第L个元素(因为总长度为2L,中位数应该是第L个元素),但实现逻辑存在问题:

  • 代码中n的初始值为0,每次循环n增加2,但判断条件是n+1==L和n+2==L
  • 当n+1==L时返回较小值,n+2==L时返回较大值,这种判断逻辑不能正确找到中位数
  • 没有考虑两个序列元素交替出现的情况,算法设计思想不正确

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

得分:0分

理由:代码实现存在严重逻辑错误:

  • 循环条件while(n < L)不合理,n从0开始每次加2,可能无法覆盖所有情况
  • n+1==L和n+2==L的判断条件不能正确识别中位数位置
  • 当n+2==L时,返回逻辑错误(应该是返回两个当前指针指向元素的较小值作为中位数)
  • 算法无法正确处理一般情况,比如当两个序列元素交替出现时
  • 缺少边界条件处理,当指针越界时会出现问题

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

得分:1分

理由:时间复杂度分析基本正确,双指针方法的时间复杂度确实是O(n);空间复杂度分析也正确,只使用了常数个变量。但由于算法本身是错误的,所以只能给部分分数。

题目总分:0+0+1=1分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发