设计一个算法,将数组A[0....n]中的所有元素循环右移K位,要求只有一个数组元素大小的附加空间

 我来答
syx54
推荐于2017-09-12 · TA获得超过7378个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2707万
展开全部
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的处理,留给你自己解决吧!
更多追问追答
追问
是这样吗??就是:
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;
}
}
我就知道那么多了,就是怎么调用我不会
追答
你可以在移动前,先输出数组的值,然后移动完了再输出一次数组的值,进行对照检查.
检查完成后,把输出代码去掉.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式