思路就不说了,好的代码一下就能看出思路
代码:
public class LoopMove {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
int n = 8, k = 4;
RightShift(arr, n, k);
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d ", arr[i]);
}
}
private static void RightShift(int[] arr, int n, int k) {
// TODO Auto-generated method stub
k %= n;
Reverse(arr, 0, n - k - 1);
Reverse(arr, n - k, n - 1);
Reverse(arr, 0, n - 1);
}
private static void Reverse(int[] arr, int i, int j) {
// TODO Auto-generated method stub
for (; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
测试结果: