您的位置:首页 > 编程语言 > Java开发

将数组循环右移k位

2015-10-23 10:24 423 查看
将数组移位就相当于将两部分序列交换位置,于是将数组移位转换为三次反转操作,如123456右移2位结果为561234,过程:分别将1234和56反转为4321和65,之后对反转结果432165做一次反转结果为561234,java代码如下:

//将数字数组循环右移k位
public class shuzuxiwei
{
public static void yiwei(int k,int[] a)
{
int len=a.length;
k=k%len;

jiaohuan(0,len-k-1,a);
jiaohuan(len-k,len-1,a);
jiaohuan(0,len-1,a);
}

private static void jiaohuan(int i, int j, int[] a)
{
// TODO Auto-generated method stub
while(i<j)
{
int t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
}
}

public static void main(String[] args)
{
int[] a={1,2,3,4,5,6,7};
yiwei(12,a);
for(int i=0;i<7;i++)
System.out.println(a[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 代码 class 操作 数组