文章

114

粉丝

0

获赞

0

访问

4.4k

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


评分及理由

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

学生答案得分为1分。

理由:题目要求查找最小的10个数,且n>100000,要求平均情况下比较次数尽可能少。学生提出的算法思想是“循环10次,每次找出一个最小值”,这本质上是进行10次选择排序中的“选择最小元素”操作。每次选择最小元素需要遍历剩余数组,比较次数约为 n + (n-1) + ... + (n-9) ≈ 10n,时间复杂度为O(n)。虽然学生描述的时间复杂度O(n²)是错误的(见第2问),但其描述的算法核心思想(多次线性扫描)在平均情况下确实可以达到O(n)的时间复杂度,只是效率低于标准答案中优化的插入或堆方法(后者在维护10个最小数时内部操作更高效)。算法思想基本正确但不够优化,且描述过于简略,未涉及如何高效维护这10个最小数的集合(例如,学生方法需要修改原数组或使用额外空间来标记已找到的最小值,否则下次扫描会重复找到同一个数)。考虑到其思路在平均比较次数上并非“尽可能少”,且存在逻辑不严谨之处(未说明如何处理已找到的数),故扣除4分。

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

学生答案得分为0分。

理由:学生给出的时间复杂度为O(n²),这是错误的。根据其描述的算法(循环10次,每次线性扫描),时间复杂度应为O(10n) = O(n)。空间复杂度O(n)也是错误的,如果原地查找且不修改原数组顺序,可能需要O(10)的额外空间来存储结果,但通常可以做到O(1)的额外空间(通过交换)。学生给出的复杂度分析存在根本性逻辑错误,因此本小题不得分。

题目总分:1+0=1分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发