1. 程式人生 > >將數組移k位右

將數組移k位右

code pub 思路 str print 右移 ++ println 互換

思路 : 反轉的算法 *3次即可
先把 第 k-n-1 反轉
把0 -k-1 反轉
整體反轉 即可

//把數組循環右移K位
public class Test_plus {
    /*
    *數組倒序算法,循環首尾互換
    */
    public static void reverse(int[] a,int b,int e) {
        for(;b<e;b++,e--) {
            int temp=a[e];
            a[e]=a[b];
            a[b]=temp;
        }
    }
    public static void shift_k(int[] a,int k) {
        int n=a.length;
        //右移k位和右移n+k位等價
        k=k%n;
        //將倒數第k個和最後一個之間的數組段對換循環
        reverse(a,n-k,n-1);
        //將第一個和第倒數第k-1個數對換
        reverse(a,0,n-k-1);
        //將第一個數和最後一個數之間的數對換
        reverse(a,0,n-1);
    }
    public static void main(String[] args) {
        int array[]= {1,2,3,4,5,6,7,8};
        shift_k(array, 2);
        for(int i=0;i<array.length;i++) {
            System.out.println(array[i]+"");
        }
    }

}

將數組移k位右