Циклический сдвиг элементов массива – одна из распространенных операций при работе с данными. Он позволяет переупорядочить элементы массива, сдвигая их влево на заданное количество позиций. Например, если у нас есть массив [1, 2, 3, 4, 5] и мы хотим сдвинуть его на 2 позиции влево, то получим массив [3, 4, 5, 1, 2].
В этой статье мы рассмотрим пример программы на Python, которая реализует циклический сдвиг элементов массива влево на r позиций. Для этого мы воспользуемся срезами (slicing) и методами работы с массивами в Python, такими как append() и pop().
Программа будет написана на языке Python, который является одним из наиболее популярных языков программирования и обладает простым и понятным синтаксисом.
Описание задачи
Цель задачи состоит в том, чтобы реализовать программу на языке Python, которая осуществляет циклический сдвиг элементов массива влево на заданное количество шагов.
Входные данные: массив чисел arr и количество шагов сдвига r.
Выходные данные: массив чисел, полученный после циклического сдвига элементов исходного массива влево на r шагов.
Пример:
Входные данные | Выходные данные |
---|---|
arr = [1, 2, 3, 4, 5], r = 2 | [3, 4, 5, 1, 2] |
arr = [7, 9, 2, 5], r = 1 | [9, 2, 5, 7] |
В решении задачи можно использовать циклы и операции со списками, такие как append(), pop(), insert().
Решение задачи
Для решения задачи необходимо реализовать функцию, которая будет выполнять циклический сдвиг элементов массива влево на заданное количество элементов.
Алгоритм решения:
- Принять на вход массив и количество элементов для сдвига.
- Внутри функции создать временный массив, равный исходному массиву.
- Удалить из временного массива первые r элементов.
- Присоединить удаленные элементы в конец временного массива.
- Вернуть полученный массив в качестве результата.
Пример реализации функции:
«`python
def shift_array_left(arr, r):
temp_arr = arr.copy()
temp_arr[:r] = []
temp_arr += arr[:r]
return temp_arr
«`
Пример использования функции:
«`python
array = [1, 2, 3, 4, 5]
shifted_array = shift_array_left(array, 2)
print(shifted_array)
«`
Вывод:
«`
[3, 4, 5, 1, 2]
«`
Таким образом, функция shift_array_left позволяет выполнить циклический сдвиг элементов массива влево на заданное количество элементов.
Алгоритм программы
Ниже приведен алгоритм программы на Python для циклического сдвига элементов массива влево на r элементов:
- Задать исходный массив из n элементов.
- Задать значение переменной r, определяющее количество элементов, на которое необходимо сдвинуть массив.
- Если значение r больше или равно n, присвоить переменной r остаток от деления r на n.
- Создать новый массив temp и скопировать в него последние r элементов исходного массива.
- Скопировать в исходный массив все элементы, начиная с позиции r и до конца массива.
- Скопировать в исходный массив элементы из массива temp, начиная с позиции 0 и до r — 1.
- Вывести исходный массив с выполненным циклическим сдвигом на r элементов.
Алгоритм основан на следующих шагах:
- Если значение r больше или равно n, используем операцию остатка от деления, чтобы сдвигать массив только на нужное количество элементов.
- Создаем временный массив temp, в котором будем хранить последние r элементов исходного массива.
- Копируем элементы, начиная с позиции r до конца массива, в исходный массив.
- Копируем элементы из массива temp в исходный массив, начиная с позиции 0 и до r — 1.
Таким образом, после выполнения алгоритма, элементы массива будут сдвинуты влево на r позиций.
Исходный код программы
Ниже приведен исходный код примера программы на Python, который осуществляет циклический сдвиг элементов массива влево на r элементов.
- def shift_array_left(arr, r):
- n = len(arr)
- r = r % n
- temp = arr[:r]
- arr[:n - r] = arr[r:]
- arr[n - r:] = temp
- return arr
- if __name__ == "__main__":
- arr = [1, 2, 3, 4, 5]
- r = int(input("Введите количество шагов сдвига: "))
- result = shift_array_left(arr, r)
- print("Исходный массив: ", arr)
- print("Результат сдвига: ", result)
Функция shift_array_left() принимает два аргумента: arr — массив, который нужно сдвинуть, и r — количество шагов сдвига. Внутри функции вычисляется размер массива n и остаток от деления r на n. Создается временный массив temp, содержащий первые r элементов массива arr. Элементы массива arr с индексами от 0 до n-r заменяются элементами массива arr с индексами от r до n. Элементы массива arr с индексами от n-r до n заменяются элементами массива temp. В итоге функция возвращает измененный массив arr.
В главной части программы вызывается функция shift_array_left(), передавая в нее исходный массив arr и количество шагов сдвига r. Результат сохраняется в переменную result и выводится на экран с помощью функции print().
Пример работы программы
Для наглядного понимания работы программы рассмотрим следующий пример:
Исходный массив: [1, 2, 3, 4, 5]
Количество сдвигов: 2
Результат выполнения программы:
- Шаг 1: [2, 3, 4, 5, 1]
- Шаг 2: [3, 4, 5, 1, 2]
В данном случае исходный массив [1, 2, 3, 4, 5] сдвигается влево на 2 элемента, то есть первые два элемента массива перемещаются в конец. После первого сдвига получаем массив [2, 3, 4, 5, 1], а после второго сдвига получаем массив [3, 4, 5, 1, 2].
Таким образом, программа корректно выполняет циклический сдвиг элементов массива влево на заданное количество элементов.