БЕСПЛАТНАЯ ПОДГОТОВКА К ЕГЭ ПО ПРОФИЛЬНОЙ МАТЕМАТИКЕ
Подготовься к ЕГЭ-2026 по профильной математике самостоятельно с помощью сервиса "1С:Репетитор"!
Понятная теория и эффективные тренажеры с объяснением! Вы успеете подготовиться к экзамену! Начните занятия прямо сейчас!
design_arrow
Циклический сдвиг массива

Циклический сдвиг массива

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

Теоретическая часть

Циклический сдвиг массива — это операция, при которой все элементы массива сдвигаются на определённое количество позиций влево или вправо. При этом элементы, которые «выпадают» за пределы массива, перемещаются в его начало (при сдвиге вправо) или в его конец (при сдвиге влево).

Формально для массива размером n с элементами a[0], a[1], ..., a[n-1] операция циклического сдвига вправо на k позиций заключается в следующем:

  1. Элементы массива сдвигаются на k позиций вправо.

  2. Элементы, которые оказываются за пределами массива, возвращаются в начало.

Так, например, если у нас есть массив:

a = [1, 2, 3, 4, 5]

и мы сдвигаем его вправо на 2 позиции, то новый массив будет:

a = [4, 5, 1, 2, 3]

При сдвиге влево процесс аналогичен, но сдвиг происходит в противоположном направлении. Если тот же массив сдвигать влево на 2 позиции, то результат будет:

a = [3, 4, 5, 1, 2]

Алгоритм циклического сдвига можно реализовать следующим образом:

  1. Для сдвига вправо на k позиций: 

    • Разбиваем массив на две части: последние k элементов и оставшиеся элементы.

    • Меняем местами эти части.

  2. Для сдвига влево на k позиций:  

    • Разбиваем массив на две части: первые k элементов и оставшиеся элементы.

    • Меняем местами эти части.

Алгоритм циклического сдвига на k позиций (вправо):

def right_shift(arr, k):

    n = len(arr)

    k = k % n  # на случай, если k больше длины массива

    return arr[-k:] + arr[:-k]

Алгоритм циклического сдвига на k позиций (влево):

def left_shift(arr, k):

    n = len(arr)

    k = k % n  # на случай, если k больше длины массива

    return arr[k:] + arr[:k]

 Иформатика–циклический сдвиг массива

Практическая часть

Для того чтобы глубже понять суть циклического сдвига массива, рассмотрим несколько практических задач.

Упражнение 1: Циклический сдвиг массива вправо
Задание: Дано целочисленный массив:
a = [1, 2, 3, 4, 5]
Необходимо сдвинуть массив вправо на 2 позиции и вывести результат.
Решение: Сначала разбиваем массив на две части: последние 2 элемента и остальные:
a[-2:] = [4, 5]
a[:-2] = [1, 2, 3]
Теперь меняем местами эти части:
a = [4, 5, 1, 2, 3]
Ответ: [4, 5, 1, 2, 3].

Упражнение 2: Циклический сдвиг массива влево
Задание: Дано целочисленный массив:
a = [1, 2, 3, 4, 5]
Необходимо сдвинуть массив влево на 3 позиции и вывести результат.
Решение: Сначала разбиваем массив на две части: первые 3 элемента и оставшиеся:
a[:3] = [1, 2, 3]
a[3:] = [4, 5]
Теперь меняем местами эти части:
a = [4, 5, 1, 2, 3]
Ответ: [4, 5, 1, 2, 3].

Упражнение 3: Сдвиг массива на количество, превышающее его длину
Задание: Дано целочисленный массив:
a = [1, 2, 3, 4, 5]
Необходимо сдвигать массив вправо на 7 позиций.
Решение: Поскольку сдвиг на 7 позиций эквивалентен сдвигу на 2 позиции (7 % 5 = 2), достаточно выполнить сдвиг на 2 позиции вправо:
a = [4, 5, 1, 2, 3]
Ответ: [4, 5, 1, 2, 3].

Упражнение 4: Использование циклического сдвига для решения задачи с массивом строк
Задание: Дано массив строк:
a = [«apple», «banana», «cherry», «date»]
Необходимо сдвигать массив влево на 1 позицию.
Решение: Разбиваем массив на две части:
a[:1] = [«apple»]
a[1:] = [«banana», «cherry», «date»]
Меняем местами эти части:
a = [«banana», «cherry», «date», «apple»]
Ответ: [«banana», «cherry», «date», «apple»].

Упражнение 5: Алгоритм сдвига с помощью временного массива
Задание: Дано массив чисел:
a = [1, 2, 3, 4, 5]
Реализуйте сдвиг массива на 2 позиции вправо с использованием временного массива.
Решение: Сначала сохраняем последние k элементов во временный массив, затем перемещаем остальные элементы:
temp = a[-2:]  # временный массив [4, 5]
a[:-2] = a[:-2]  # оставшиеся элементы [1, 2, 3]
a = temp + a[:-2]
Ответ: [4, 5, 1, 2, 3]. 

Связь с подготовкой к ЕГЭ

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

Заключение

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