设计一个算法,将数组A[0....n]中的所有元素循环右移K位,要求只有一个数组元素大小的附加空间
1个回答
展开全部
1.首先交换两个变量的值,通常使用一个附加的中间变量进行过度.我通俗的举例,就是有1杯牛奶和1杯咖啡,要交换这两个杯子里的东西,就得有1个空杯子.
2.那么数组元素的移动,无非也是变量值的交换,你是右移动K位,那么假设用变量T过度.
设现在要将 i 移到 i+K 的位置,(假设 i 和 i+k 在0--N之间)应该:
T = A(I+K)
A(I+K) = A(I)
A(I) = T
接下来,要考虑,当 i + K 大于n的处理,留给你自己解决吧!
2.那么数组元素的移动,无非也是变量值的交换,你是右移动K位,那么假设用变量T过度.
设现在要将 i 移到 i+K 的位置,(假设 i 和 i+k 在0--N之间)应该:
T = A(I+K)
A(I+K) = A(I)
A(I) = T
接下来,要考虑,当 i + K 大于n的处理,留给你自己解决吧!
更多追问追答
追问
是这样吗??就是:
void Move(Elem Type A[],int n,int k)
{
int count ,t;
Elem Type temp;
for(count=1;count=0;i--)
A[i+1]=A[i];
A[0]=temp;
}
}
我就知道那么多了,就是怎么调用我不会
追答
你可以在移动前,先输出数组的值,然后移动完了再输出一次数组的值,进行对照检查.
检查完成后,把输出代码去掉.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询