Напишем утилиту для работы с массивами. Основная часть функционала готова: метод printArray() выводит в консоли все элементы массива.
Тебе осталась мелочь: реализовать метод reverseArray(). Он должен менять порядок элементов массива на обратный.
Метод должен работать только с массивами целочисленных
Правильный порядок
- 7
Недоступна
Комментарии (361)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #3170013
позавчера, 14:16
Все проходит
0
Anonymous #3170013
позавчера, 14:15
public static void reverseArray(int[] array) {
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = temp;
0
Nikita
5 февраля, 21:10
Создал копию основного массива. И заменял последний элемент изначального массива на первый элемент копии, потом предпоследний элемент основного массива на второй элемент копии, и так далее.
0
Alexey Andreevich
3 февраля, 09:00
/* Комментарий удален */
0
UK
2 февраля, 16:08
Не забывайте что можно пользоваться дебаггером, очень помогает,
позволяет поглядеть в какой ячейке находиться определенное значение.
+1
Peregrinus Umbra
27 января, 12:20

+1
Vasily Pasynkov
26 января, 17:41
public static void reverseArray(int[] array) {
int[] array2 = Arrays.copyOfRange(array,0,array.length);
int g = 0;
for (int i = array.length - 1; i >= 0; i--) {
array[i] = array2[g];
g++;
}
}
короч костыль какой-то с копии, по другому мой мозг не смог(
+1
TheDogSh1t
26 января, 21:40
тебе не обязательно использовать copyOfRange()
достаточно copyOf(array, array.length)
я решил, кстати, таким же образом, но мне кажется, что простым перебором через буфер будет более выгодно в плане использования памяти, так как мы будем работать с существующим массивом, а не создавать новый и работать с двумя сразу, с маленьким массивом это будет незаметно, но если массив будет содержать в себе гигантское количество элементов, то скорее всего это будет сильно отражаться на быстродействии программы.
0
BSM
22 января, 17:23
объясните как работает этот фрагмент я все не могу понять
+1
Антон
25 января, 16:56
В цикле мы двигаемся до середины массива. Ведь мы обрабатываем на каждом шаге сразу пару членов сразу, меня их местами. А значит остановиться нужно посередине. Далее мы берем пару членов массива зеркально от середины. Представьте ряд 10 цифр от 1 до 10. Мы двигаемся к 5 и берем попарно на каждом шаге цифры 1 и 10, 2 и 8, 3 и 7, 4 и 6. Далее нам нужно как-то поменять их местами. Но как это сделать? Ведь если мы "положим" цифру 10 на место 1, то 1 придется "выкинуть". Чтобы этого избежать нам нужен какой-то буфер - еще одна ячейка для временного хранения значения. Вот и получается, что мы берем цифры 1 и 10, кладем 1 в наш буфер (переменная temp), кладем 10 в место где было 1, достаем 1 и кладем в место где было 10. На выходе вместо 1 и 10 получаем 10 и 1. Переходим к 2 и 8, повторяем процедуру.
Почему индекс "зеркального" члена массива выглядит как array[array.length - 1 - i]? Для понимания нужно вспомнить, что индексация массива начинается не с 1, а с 0. Таким образом последний член массива будет именно "длинна массива - 1". А дальше мы отнимаем значение нашего счетчика. Мы же двигаемся к середине с двух сторон, верно? Если снизу вверх продвинулись на 2 шага, то и сверху вниз нужно спуститься ровно на столько же.
Сомневаюсь, что для вас еще актуально, но может кому-то поможет такое объяснение "на пальцах".
+14
Artem
1 февраля, 11:07
Спасибо Вам большое.
0
Вержбицкий Аркадий Работает в Роскосмос
17 января, 20:16
public static void reverseArray(int[] array) {
for (int i = 0; i < array.length/2; i++) {
int temp = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = temp;
}
}
0
Timur KhasmamedovExpert
16 января, 16:37
У кого проблемы с пониманием верного решения (можно запутаться в индексах), рекомендую ввести новую переменную для свапа, и это более наглядно:
Еще можно "в лоб" решить: создать копию массива, пройтись по ней и присвавивать переменной старого массива "новые" значения из копии. Тогда можно и без /2
А еще лучше всего на листочке расписать, да. Тогда вообще все понятно.
0
Владислав QA Automation Engineer в NetCracker
30 января, 20:29
Ваш вариант не сработает. Попробуйте проверить на массиве с тремя ячейками, например.
0
Timur KhasmamedovExpert
30 января, 21:50
Который из ? Проверил который в коде выше на примере массива из
11, 1, 3, - стало
3, 1, 11, - было
дает тот же результат... все работает.
сами-то проверяли ? 0
Владислав QA Automation Engineer в NetCracker
31 января, 19:19
Вот этот:
0
Timur KhasmamedovExpert
31 января, 20:04
Сами-то проверяли ?
Я вот проверял. Как на родном массиве, так и на тройке выше.
0