Циклический сдвиг массива - это операция, при которой элементы массива перемещаются влево или вправо на определенное количество шагов, и элементы, выходящие за пределы массива, перемещаются на противоположную сторону массива. Этот процесс широко используется в программировании, особенно в алгоритмах обработки данных и структурах данных.
JavaScript, как и многие другие языки программирования, предоставляет различные способы реализации циклического сдвига массива.
shift()
Один из самых простых способов выполнения циклического сдвига - это использование методов push()
и shift()
. Метод push()
добавляет элемент в конец массива, а метод shift()
удаляет первый элемент массива и возвращает его значение.
function cyclicShift(array, steps) {
for (let i = 0; i < steps; i++) {
array.push(array.shift());
}
return array;
}
// Пример использования:
let arr = [1, 2, 3, 4, 5];
let shiftedArr = cyclicShift(arr, 2);
console.log(shiftedArr); // [3, 4, 5, 1, 2]
В этом примере мы передаем массив arr и количество шагов 2 функции cyclicShift()
. Затем метод push()
используется для перемещения первого элемента в конец массива, что происходит steps
раз.
Другой способ выполнения циклического сдвига - использование оператора остатка %
. Этот метод позволяет избежать создания нового массива и выполнить сдвиг в пределах одного массива.
function cyclicShift(array, steps) {
const len = array.length;
steps %= len;
return array.slice(steps).concat(array.slice(0, steps));
}
// Пример использования:
let arr = [1, 2, 3, 4, 5];
let shiftedArr = cyclicShift(arr, 2);
console.log(shiftedArr); // [3, 4, 5, 1, 2]
Здесь мы используем оператор %
для вычисления реального количества шагов, после чего с помощью методов slice()
объединяем две части массива: от steps
до конца и от начала до steps
.