将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
Posted ukzq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n相关的知识,希望对你有一定的参考价值。
下面是使用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的主要内容,如果未能解决你的问题,请参考以下文章