標籤:TE 長度 author system 大小 [] 更換 開始 位置
下面是使用a數組本身完成:
package 數組元素k位右移;/** * 數組向又移動k位。 0<k<n * * @author SeeClanUkyo 將一組數組向右移動k位,末尾的要轉置移動到數組開始,其中n為數組大小,0<k<n */public class ArrayMoveK { public static void main(String[] args) { int k = 3; int[] a = { 1, 2, 3, 4, 5 }; arrayMoveK(a, k); } public static void arrayMoveK(int[] a, int k) { //擷取長度 int l = a.length; //擷取最大下標值 int maxIndex = l - 1; //for迴圈使末尾及開始更換位置 for (int i = 0; i < k; i++) { //擷取數組最大下標的數值 int last = a[maxIndex]; for (int j = 0; j < maxIndex; j++) { //將數組中的其他元素都右移一位 , 第一次擷取時,maxIndex-j為-0為maxIndex本身 a[maxIndex - j] = a[maxIndex - 1 - j]; } //將本次最末尾的數值傳遞給數組開始 a[0] = last; } //遍曆輸出新的數組 for (int x : a) { System.out.print(x + " "); } }}
下面是藉助第二個數組:(這樣的話就簡單的多了)
package 數組元素k位右移;/** * 數組向又移動k位。 0<k<n * * @author SeeClanUkyo 將一組數組向右移動k位,末尾的要轉置移動到數組開始,其中n為數組大小,0<k<n */public class ArrayMoveK { public static void main(String[] args) { int k = 3; int[] a = { 1, 2, 3, 4, 5 }; arrayMoveK(a, k); } public static void arrayMoveK(int[] a, int k) { //擷取長度 int l = a.length; //擷取最大下標值 int maxIndex = l - 1; //for迴圈使末尾及開始更換位置 for (int i = 0; i < k; i++) { //擷取數組最大下標的數值 int last = a[maxIndex]; for (int j = 0; j < maxIndex; j++) { //將數組中的其他元素都右移一位 , 第一次擷取時,maxIndex-j為-0為maxIndex本身 a[maxIndex - j] = a[maxIndex - 1 - j]; } //將本次最末尾的數值傳遞給數組開始 a[0] = last; } //遍曆輸出新的數組 for (int x : a) { System.out.print(x + " "); } }}
將一組數組向右移動k位,末尾的要轉置移動到數組開始,其中n為數組大小,0<k<n