將數組移k位右
阿新 • • 發佈:2018-08-22
code pub 思路 str print 右移 ++ println 互換 思路 : 反轉的算法 *3次即可
先把 第 k-n-1 反轉
把0 -k-1 反轉
整體反轉 即可
先把 第 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位右