文章
26
粉丝
0
获赞
0
访问
383
评分及理由
(1)得分及理由(满分4分)
得0分。学生的基本设计思想是将两个序列合并后排序,再取中位数。这与题目要求的“时间和空间两方面都尽可能高效的算法”不符,因为题目期望的是利用中位数性质进行二分查找的高效算法(时间复杂度O(log n)),而学生的思路是O(n log n)的排序方法,效率较低,且未体现算法设计的优化思想。
(2)得分及理由(满分9分)
得0分。代码实现存在多处逻辑错误:
1. 数组A的大小为2*L,但初始化时未赋值就直接调用Qsort(传入未初始化的数组),会导致错误。
2. 合并数组的循环应在排序之前,但学生代码中先调用了Qsort(在数组未赋值时),然后才赋值,顺序错误。
3. Qsort函数实现本身有误:分区操作中,pivot选择A[L],但循环结束后交换A[L]和A[i]时,i可能越界(因为j可能先减到小于i)。
4. Find函数中,Qsort被错误地放在循环内(循环2*L次),这会导致不必要的重复排序,且逻辑错误。
5. 返回A[L]是正确的,但基于以上错误,代码无法正确运行。
整体代码未实现高效算法,且逻辑混乱,不符合题目要求。
(3)得分及理由(满分2分)
得1分。学生正确说明了时间复杂度为O(n log n)和空间复杂度为O(1)(但实际合并数组需要O(n)空间,这里分析错误)。空间复杂度应为O(n)(因为创建了大小为2L的数组),但学生误写为O(1),但根据误写规则(可能识别错误或笔误),不扣分;时间复杂度分析正确(但算法本身不是最优)。因此给1分。
题目总分:0+0+1=1分
登录后发布评论
暂无评论,来抢沙发