文章
21
粉丝
0
获赞
0
访问
1.0k

评分及理由
(1)得分及理由(满分3分)
该生的基本设计思想是正确的:先创建一个辅助数组,用原数组中正数的值作为辅助数组的下标进行计数,然后遍历辅助数组找到第一个计数为0的下标,该下标即为未出现的最小正整数。这一思路能够有效解决问题。虽然标准答案采用原地标记的方法,但本题思路正确且逻辑通顺,应得满分。
(2)得分及理由(满分8分)
代码逻辑与设计思想一致,基本实现了功能。但存在几处潜在问题:
B的大小定义为MAXSIZE,在代码中没有给出具体定义,这在实际运行时可能导致数组越界(例如当原数组中存在较大正整数时)。本题中未明确说明数组B的范围,且学生未做处理,存在逻辑不完整的隐患,应适当扣分。for(int j = 1; ; j++)循环没有终止条件,若辅助数组中所有下标对应的值都大于0(即数组包含1到MAXSIZE的所有正整数),则会无限循环。虽然从题意看最终总能找到缺失的数,但在没有明确上限时会导致程序错误。这属于逻辑缺陷,需扣分。综合以上,扣3分。
(3)得分及理由(满分2分)
时间复杂度分析正确,为O(n);空间复杂度分析正确,为O(n)。应得满分。
题目总分:3+5+2=10分
登录后发布评论
暂无评论,来抢沙发