文章
78
粉丝
0
获赞
0
访问
3.6k
(1)设计思想:将0到p-1的序列设为A,将p到n-1的序列设为B,则经过(AB)^-1 = B^-1A^-1,(B^-1)^-1(A^-1)^-1 = BA,这样就实现了循环左移操作。
(2)void reverse(int a[],int low, int high) { //将序列从low到high进行翻转
int temp = 0;
while (low < high) {
temp = a[low];
a[low] = a[high];
a[high] = temp;
low++;
high--;
}
}
void moveLeft(int a[], int p, int n) {
reverse(a, 0, n-1);
reverse(a, 0,p-1);
reverse(a, p, n - 1);
}
(3)时间复杂度:o(n) 空间复杂度:o(1)
评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的设计思想与标准答案一致,正确描述了通过三次逆置实现循环左移的思路,表述清晰。
(2)得分及理由(满分7分)
得分:5分
理由:学生代码逻辑基本正确,但存在以下问题:
1. 函数moveLeft
中的逆置顺序错误,应先逆置前p个元素,再逆置剩余元素,最后逆置整个数组。学生的代码顺序与标准答案相反,属于逻辑错误。
2. 代码注释较少,但关键逻辑清晰,扣分较少。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了算法的时间复杂度和空间复杂度,与标准答案一致。...
登录后发布评论
暂无评论,来抢沙发