文章

480

粉丝

0

获赞

1

访问

65.2k

头像
2018年(408)计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年12月14日 22:39
阅读数 10


评分及理由

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

学生给出的基本设计思想是采用计数排序思想,使用一个大小为 n+1 的辅助数组 count 来记录每个正整数出现的次数,然后遍历 count 数组找到第一个出现次数为 0 的正整数。该思路能够正确解决问题,且时间上尽可能高效(O(n))。虽然与标准答案(原地哈希标记)的具体实现方法不同,但思路正确且有效,因此不扣分。
得分:3分

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

学生根据设计思想给出了 C 语言代码描述。算法逻辑清晰:
1. 动态分配大小为 n+1 的 count 数组。
2. 初始化 count 数组元素为 0。
3. 遍历原数组,仅当元素值在 [1, n] 范围内时,在 count 数组中对应位置计数。
4. 从 1 到 n 遍历 count 数组,找到第一个计数为 0 的位置并返回。
5. 若 count[1]~count[n] 均不为 0,则返回 n+1。
代码正确实现了算法思想,关键步骤有注释。但存在一个小问题:在初始化 count 数组时,循环从 i=1 开始,使得 count[0] 未被初始化(虽然算法中未使用 count[0],不影响结果,但严格来说存在未初始化的内存访问)。考虑到这是非关键逻辑错误,且不影响算法正确性,扣 1 分。
得分:7分

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

学生正确分析了算法的时间复杂度和空间复杂度:时间复杂度为 O(n),空间复杂度为 O(n)。分析正确,与算法实现一致。
得分:2分

题目总分:3+7+2=12分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发