public static int[] shift(int[] array, int k) { // если k < 0, то сдвиг влево, иначе вправо
k = k % array.length;
if(k == 0)
return Arrays.copyOf(array, array.length); // чтобы не передавать тот же array, а новый
k = k < 0 ? (array.length + k) : k;
int[] tempA = new int[array.length];
System.arraycopy(Arrays.copyOfRange(array, array.length - k, array.length), 0, tempA, 0, k);
System.arraycopy(Arrays.copyOfRange(array, 0, array.length - k), 0, tempA, k, tempA.length - k);
/*// или по одному, но долго и нудно:
int[] tempA = Arrays.copyOf(array, array.length);
for (int i = 0; i < k; i++) {
int temp = tempA[tempA.length - 1];
for (int j = tempA.length - 1; j > 0; j--)
tempA[j] = tempA[j - 1];
tempA[0] = temp;
}*/
return tempA;
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ