Добрый день. Подскажите пожалуйста, зачем мы делим длину массива пополам в условии. Мы же тогда поменяем местами значения только до array[3]? А дальше? Не понимаю как это работает и почему выполняется условие. Подскажите пожалуйста как всё же работает этот алгоритм..
int a = array.length;
for (int i = 0; i < a / 2; i++) {
int temp = array[i];
array[i] = array[a - i - 1];
array[a - i - 1] = temp;
Сергей
15 уровень
Как работает данный код?
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
21 июня 2024, 06:13
Посмотри внимательно какие именно элементы меняются местами в каждой итерации цикла, тебе в этом помогут индексы. Если разбираться лень, то примерно вот что происходит:
Во время работы цикла меняются местами равноудалённые элементы. Первый с последним, второй с предпоследним.
Если сделать проход по всей длине массива то элементы просто дважды поменяются местами и встанут на свои изначальные позиции, потому проходят до середины. Работает это как на чётных так и на нечётных длинах, в случае с нечётной просто средний элемент остаётся на своём месте, до него дело не доходит. Тип integer ведь дробной части не имеет, потому, например 5/2 будет не 2.5, а очень даже 2.
+2
Сергейquality engineer в ООО "КЛААС"
24 июня 2024, 04:39
Спасибо большое!
0