1. 程式人生 > >將陣列迴圈右移k位

將陣列迴圈右移k位

將陣列移位就相當於將兩部分序列交換位置,於是將陣列移位轉換為三次反轉操作,如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]); } }