Сдвиг вправо по кругу с использованием метода массива java - PullRequest
0 голосов
/ 02 сентября 2018

Мне нужна помощь по использованию метода arraycopy в Java.

У меня есть массив символов, таких как:

[a, b, c, d]

и я хочу выполнить круговой сдвиг вправо, например, если круговые сдвиги имеют целое число 2, то символы сместятся на два места вправо, в результате чего:

[с, д, а, б]

Я хочу знать, как я могу реализовать это с помощью метода arraycopy.

Мне удалось реализовать это, когда дело доходит до сдвига массива влево на определенное количество сдвигов следующим образом:

System.arraycopy(sArray, leftShifts, leftShiftedArray, 0, n - leftShifts);
System.arraycopy(sArray, 0, leftShiftedArray, n - leftShifts, leftShifts);

Мне просто трудно сделать то же самое для права.

Спасибо

1 Ответ

0 голосов
/ 02 сентября 2018

Вращение массива N -элемента, оставленного k элементами, эквивалентно вращению того же массива вправо * N-k элементами. Поэтому все, что вам нужно сделать, это заменить leftShifts на n - rightShifts в ваших формулах:

System.arraycopy(sArray, n - rightShifts, rightShiftedArray, 0, rightShifts);
System.arraycopy(sArray, 0, rightShiftedArray, rightShifts, n - rightShifts);
...