Skip to main content

43. Сдвиги

Теория

Задача

Сдвинуть все элементы массива на одну позицию влево (циклически). Вывести полученный массив на экран. Первый элемент должен оказаться на месте последнего. Перестановка элементов в парах не считается верным решением (потому что неэффективно).

public class Main {

public static void main(String[] args) {
// исходный массив
int[] arr = new int[]{-96, 41, -58, 18, -99, 54, -37, 21, -89, 45, -29};

// сохраняем первый элемент массива во временную переменную
int tmp = arr[0];

// перебираем индексы от первого до предпоследнего
for (int i = 0; i < arr.length - 1; i++)
// сдвигаем значение (i+1)-го элемента к i-му
arr[i] = arr[i + 1];

// выводим значения масисва до заполнения последнего элемента
// в решении задачи этот цикл нужно удалить
// он нам нужен для самоконтроля
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");


// сохраняем временную переменную в последний элемент массива
arr[arr.length - 1] = tmp;

for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");

}
}

Задание

Массив arr уже объявлен, вам нужно написать только команды, обрабатывающие его значения, т.е. только часть тела метода main().

Вывод значений массива система выполнит за вас

  1. Сдвинуть все элементы массива на одну позицию влево (циклически). Вывести полученный массив на экран. Первый элемент должен оказаться на месте последнего.
  2. Сдвинуть все элементы массива на одну позицию вправо (циклически). Вывести полученный массив на экран. Последний элемент должен оказаться на месте первого.
  3. С клавиатуры вводится натуральное число kk, меньшее длины массива. Пусть arr уже задан. Сдвинуть все элементы массива на kk позиций влево (циклически). Каждый элемент нужно переставлять не более двух раз.
  4. С клавиатуры вводится натуральное число kk, меньшее длины массива. Пусть arr уже задан. Сдвинуть все элементы массива на kk позиций вправо (циклически). Каждый элемент нужно переставлять не более двух раз.
  5. Дано число kk и kk чисел. Каждое число означает сдвиг массива. Положительные соответствуют сдвигу вправо, отрицательные - влево. Требуется написать программу, которая выполнит все требуемые сдвиги.
  6. Поместить все чётные элементы в начало массива, а нечётные - в конец
  7. Переставить элементы массива с сохранением порядка внутри групп так, чтобы сначала были выведены все элементы, сравнимые с нулём по модулю семь, потом с единицей и т.д.

Ссылка на контест