文章
266
粉丝
0
获赞
0
访问
27.9k
1):利用维护大根堆,来保留n中的最小的10个数,首先取最初的10个元素构建大根堆,接着每次遍历一个元素都要和堆顶元素进行比较如果小于则删除堆顶元素并插入该元素,一直往后进行同样的操作;
3):时间复杂度是o(nlogn),空间复杂度是o(1);
评分及理由
(1)得分及理由(满分5分)
学生答案描述了使用大根堆的方法来查找最小的10个数:首先用前10个元素构建大根堆,然后遍历剩余元素,若当前元素小于堆顶则替换堆顶并调整堆。该算法思想与标准答案中的方法二一致,思路正确且描述清晰。因此,本部分得5分。
(2)得分及理由(满分5分)
学生给出的时间复杂度为O(nlogn),但标准答案中堆方法的时间复杂度为O(n)(构建堆的初始代价为O(k),后续每个元素调整堆的代价为O(logk),总代价为O(nlogk),其中k=10为常数,因此为O(n))。学生的时间复杂度分析有误,应扣分。空间复杂度O(1)正确。因此,本部分得3分(时间复杂度错误扣2分)。
题目总分:5+3=8分
登录后发布评论
暂无评论,来抢沙发