Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.

Обмен значениями

Для изменения массива в алгоритмических задачах часто используется приём с введением дополнительной ("временной") переменной. Такое бывает нужно когда значения в массиве меняются местами, например при сортировке.

Реализуем функцию reverse, которая располагает значения в обратном порядке без создания нового массива. Хотя вариант с созданием нового массива предпочтительнее с точки зрения простоты и поддерживаемости кода, вариант без создания нового массива полезен для более полного понимания работы алгоритмов.

Алгоритм работы следующий: достаточно менять местами элементы, стоящие зеркально относительно центра. Пример:

Первое, с чем нужно разобраться в данном алгоритме — до какого индекса двигаться, производя обмен. Достаточно очевидно, что это середина массива, потому что если в массиве нечетное количество элементов, то при реверсе центральный элемент должен остаться на месте. В джаве по умолчанию используется целочисленное деление, поэтому универсальным решением будет просто поделить размер массива на 2. Но обратите внимание как будет вычисляться индекс зеркальный текущему, там уже нужно подумать.

Внутри тела цикла происходит самое интересное. Нам нужно поменять два значения местами. Если попытаться сразу одному значению присвоить другое, то мы потеряем исходное значение. Поэтому, предварительно нужно сохранить значение во временную переменную int temp = ar[mirrorIndex];. Затем уже можно произвести обмен значениями, используя значение сохраненное в дополнительную переменную.

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

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →