文章

427

粉丝

0

获赞

3

访问

65.3k

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

利用大根堆排序,每次选出十个数中最大的元素 依次遍历n个数后 堆中的十个数就是n个数中最小的十个

时间复杂度o(n)空间复杂度o(1)


评分及理由

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

学生描述了使用大根堆来查找最小的10个数的算法思想。其核心思路是:维护一个大小为10的大根堆,堆顶是当前堆中最大的元素。遍历数组,如果当前元素比堆顶小,则替换堆顶并调整堆。最终堆中的10个元素就是最小的10个数。这个思路是正确的,并且符合题目要求“平均情况下的比较次数尽可能少”。因此,该部分可得满分5分。

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

学生给出的时间复杂度为O(n),空间复杂度为O(1)。对于大根堆方法,构建初始大小为k(k=10)的堆的时间复杂度为O(k),后续遍历n-k个元素,每次调整堆的复杂度为O(log k)。由于k是常数10,所以总时间复杂度为O(n)。算法只使用了固定大小的额外空间(即原数组的前10个位置作为堆),因此空间复杂度为O(1)。该分析正确,可得满分5分。

题目总分:5+5=10分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发