Циклическое вращение массива на одну позицию предполагает перемещение каждого элемента массива на позицию рядом с ним, при этом последний элемент перемещается на первую позицию. В этой статье блога мы рассмотрим различные эффективные методы достижения такого поворота за одну операцию. Мы предоставим примеры кода на популярных языках программирования, что позволит вам легко реализовать эти методы.
Метод 1: использование вспомогательного массива
Один из способов циклического поворота массива — использование вспомогательного массива для временного хранения повернутых элементов. Вот пример на Python:
def cyclically_rotate_array(arr):
n = len(arr)
rotated_arr = [0] * n
for i in range(n):
rotated_arr[(i + 1) % n] = arr[i]
return rotated_arr
Метод 2: использование алгоритма обращения
Другой эффективный подход — перевернуть весь массив, а затем перевернуть первые элементы k
и оставшиеся элементы n-k
по отдельности. Вот пример на Java:
public static void cyclicallyRotateArray(int[] arr) {
int n = arr.length;
reverseArray(arr, 0, n - 1);
reverseArray(arr, 0, n - 2);
}
public static void reverseArray(int[] arr, int start, int end) {
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
Метод 3: использование временной переменной
Вы также можете циклически вращать массив, используя временную переменную для хранения последнего элемента, сдвигая при этом остальные элементы вправо. Вот пример на C++:
void cyclicallyRotateArray(int arr[], int n) {
int temp = arr[n - 1];
for (int i = n - 1; i > 0; i--) {
arr[i] = arr[i - 1];
}
arr[0] = temp;
}
В этой статье мы рассмотрели три эффективных метода циклического поворота массива на одну позицию. Эти методы включают использование вспомогательного массива, алгоритма обращения или временной переменной. В зависимости от языка программирования и конкретных требований вы можете выбрать наиболее подходящий для вашей реализации метод. Применяя эти методы, вы можете легко выполнять циклическое вращение массивов оптимизированным образом.