Эффективное вращение массива: изучение нескольких методов поворота массива на K позиций

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

Метод 1: использование временного массива
Самый простой способ вращения массива — создание временного массива и копирование элементов с соответствующими сдвигами. Вот пример на Python:

def rotate_array(arr, k):
    n = len(arr)
    temp = [0] * n
    for i in range(n):
        temp[(i + k) % n] = arr[i]
    return temp
# Example usage
array = [1, 2, 3, 4, 5]
k = 2
rotated_array = rotate_array(array, k)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]

Метод 2: перестановка подмассивов
Другой эффективный подход — перевернуть подмассивы внутри массива. Применив эту технику дважды, мы можем добиться желаемого эффекта вращения. Вот пример на Python:

def reverse_subarray(arr, start, end):
    while start < end:
        arr[start], arr[end] = arr[end], arr[start]
        start += 1
        end -= 1
def rotate_array(arr, k):
    n = len(arr)
    k = k % n
    reverse_subarray(arr, 0, n - 1)
    reverse_subarray(arr, 0, k - 1)
    reverse_subarray(arr, k, n - 1)
    return arr
# Example usage
array = [1, 2, 3, 4, 5]
k = 2
rotated_array = rotate_array(array, k)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]

Метод 3: использование срезов массива
В Python мы можем воспользоваться срезами массива для эффективного вращения массива. Вот пример:

def rotate_array(arr, k):
    n = len(arr)
    k = k % n
    return arr[-k:] + arr[:-k]
# Example usage
array = [1, 2, 3, 4, 5]
k = 2
rotated_array = rotate_array(array, k)
print(rotated_array)  # Output: [4, 5, 1, 2, 3]