将数组循环右移k位

来源:互联网 发布:捕鱼源码有哪些权限 编辑:程序博客网 时间:2024/04/30 07:08

将数组移位就相当于将两部分序列交换位置,于是将数组移位转换为三次反转操作,如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]);    }}
1 0
原创粉丝点击