Циклический сдвиг массива
Циклический сдвиг массива — это перестановка его элементов на несколько позиций вправо или влево, при которой элементы, вышедшие за границу, появляются с противоположного конца. Относительный порядок элементов сохраняется.
Номера элементов определяются с помощью индексации массива. При сдвиге вправо на \(k\) позиций элемент с индексом \(i\) получает новый индекс \(((i+k)\bmod n)\), где \(n\) — длина массива. При сдвиге влево используется вычитание \(k\). Обращение к исходным и новым позициям выполняется через обращение к элементам массива.
Пусть массив \([10, 20, 30, 40, 50]\). При циклическом сдвиге вправо на 2 позиции получаем \([40, 50, 10, 20, 30]\): элементы 40 и 50 переходят в начало. При сдвиге влево на 2 позиции результатом будет \([30, 40, 50, 10, 20]\).
При обычном сдвиге освободившиеся позиции могут заполняться нулями или другими заданными значениями, а вышедшие элементы теряются. При циклическом сдвиге ни один элемент не исчезает: он перемещается на противоположный край.
Какой массив получится после циклического сдвига \([1, 2, 3, 4]\) вправо на одну позицию?
Если величина сдвига больше длины массива, достаточно оставить остаток от деления \(k\) на \(n\): сдвиг на \(n\) позиций возвращает массив в исходное состояние. Это свойство удобно применять в программах и при решении экзаменационных задач.
Главное
- Циклический сдвиг перемещает все элементы на одинаковое число позиций и сохраняет их порядок.
- При переходе через границу массива элемент появляется с противоположного конца.
- Для индексов используют операцию остатка от деления: \(\bmod n\).