Ребята, кто все знает и понимает, помогите пожалуйста понять правильное решение.
public class Solution {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
printArray(array);
reverseArray(array);
printArray(array);
}
public static void reverseArray(int[] array) {
//напишите тут ваш код
for (int i = 0; i < array.length/2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
}
public static void printArray(int[] array) {
for (int i : array) {
System.out.print(i + ", ");
}
System.out.println();
}
}
___________________________________
for (int i = 0; i < array.length/2; i++) - почему именно array.length/2 ? Цикл же должен быть на все элементы массива?
array[array.length - i - 1] - что значит это выражение? И почему мы его присваиваем array[i] ?
Спасибо :)
Oleg Danchuk
28 уровень
Help, не получается понять решение
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Heinrich
11 февраля 2021, 19:14решение
Здесь за одну итерацию идет сразу два присваивания! С начала массива и с конца. Поэтому и нужно всего пять проходок, а не 10. То есть array.length/2 что равно 5.
array.length это длина массива. array.length равно 10. Здесь мы просто считаем и идем с конца.
array[array.length - i - 1] для первой итерации равно array[9], для второй array[8] .... и так до array[6]
+11
Oleg Danchuk
11 февраля 2021, 19:32
спасибо тебе большое, теперь намного понятней.
Я еще через Debug прогнал)
0
Alexey_Berezovskiy
30 марта 2021, 17:33
Почему [array.length - i - 1 ] равно array[9], а не [array.length - 1] ?
0
Mr.Selby
4 апреля 2021, 11:12
Они оба равны 9 при первой итерации, но по ходу цикла [array.length - i - 1 ] - будет менять значение, а [array.length - 1] не будет
+2
K.
19 апреля 2021, 19:06
А можете подсказать, что делает последняя строка в цикле?
0