文章

26

粉丝

0

获赞

0

访问

383

头像
2011年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月17日 17:31
阅读数 4


评分及理由

(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分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发