有n个整数,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数
题目:有n个整数,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数
public class 第三十六题数组向后移m个位置 {
public static void main(String[] args) {
int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
int n = a.length;
System.out.print("请输入向后移动的位数: ");
Scanner in = new Scanner(System.in);
int m = in.nextInt();
in.close();
if (m < 1 ) {
System.out.println("输入的范围错误");
} else if(m > a.length){
m = m % n;
move(a, m);
} else {
move(a, m);
}
System.out.println(Arrays.toString(a));
}
public static void move(int[] a,int m) {
int n = a.length;
int[] b = new int[n-m];
int len = n - m; //需要挪动的长度
//保存最后n-m个数字
int j = 0;
for(int i = m; i < n; i++,j++) {
b[j] = a[i];
}
//把前面的m个向后移动
for(int i=0; i < m; i++) {
a[i+len] = a[i];
}
//把保存的数字拷贝的数组前面
for(int k = 0; k < len; k++) {
a[k] = b[k];
}
}
}