文章
427
粉丝
0
获赞
3
访问
65.3k
利用大根堆排序,每次选出十个数中最大的元素 依次遍历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分
登录后发布评论
暂无评论,来抢沙发