Эффективные методы циклического вращения массива за одну операцию

Циклическое вращение массива на одну позицию предполагает перемещение каждого элемента массива на позицию рядом с ним, при этом последний элемент перемещается на первую позицию. В этой статье блога мы рассмотрим различные эффективные методы достижения такого поворота за одну операцию. Мы предоставим примеры кода на популярных языках программирования, что позволит вам легко реализовать эти методы.

Метод 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;
}

В этой статье мы рассмотрели три эффективных метода циклического поворота массива на одну позицию. Эти методы включают использование вспомогательного массива, алгоритма обращения или временной переменной. В зависимости от языка программирования и конкретных требований вы можете выбрать наиболее подходящий для вашей реализации метод. Применяя эти методы, вы можете легко выполнять циклическое вращение массивов оптимизированным образом.