下面是使用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 + " "); } } }
将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。