Всем привет! может кто объяснить. решил задачу, но в голове не укладывается.
использовал данный цикл:
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;
}
каким образом, в развернутом массиве выводиться первой цифровой ноль?
хотя если пройтись взглядом по этому циклу, первой цифрой должна быть девять.
разве нет?
Kirill
Level 22
Кто объяснит код?
Under discussion
Comments (6)
- Popular
- New
- Old
You must be signed in to leave a comment
Андрей КравцовExpert
8 January 2023, 08:57
Привет) Хочу посоветовать тебе заиметь привычку ставить пробелы. Это не только удобно, но и требуется нормами написания) И в будущем не нужно будет переучиваться.
К сожалению, ты не приложил исходный массив, и ответить на твой вопрос какое там число не возможно.
Видно что ты применил способ переворота массива через переменную.
Хочу тебе предложить видео на эту тему от великого преподавателя Тимофея Хирьянова.
Оно на си, но не переживайте в данном контексте оно полностью идентично Java. 0
Kirill
8 January 2023, 09:51
Учту замечания)
В начале ставил, а потом решил без них почему то.
Буду ставить)
0
ГоффMaster
8 January 2023, 01:20
Вот у тебя есть массив 1, 2, 3, 4, 5
запускаем цикл, от 0 до 5/2 = 2, то-есть до i < 2
первый проход, i = 0
Теперь массив выглядит так: 5, 2, 3, 4, 1
Второй проход, i = 1
Теперь аррэй выглядит так: 5, 4, 3, 2, 1
Цикл на этом закончится, потому что следующее i будет 2, и условие продолжения цикла i < 2 не выполнится.
Мы перевернули массив, поменяв первый элемент с последним, второй - со вторым с конца. Если бы массив был больше, то и так далее, третий - с третьим с конца, четвёртый - с четвёртым с конца. Центральный элемент, если таковой есть, остаётся без изменений. 0
batan112(Руслан)
8 January 2023, 02:08
рассмотрим как происходит в цикле по действиям..
допустим массив не четный.. не будем брать ноль..так понятнее..
и элементы то же считаются не с нуля, а с Единицы..
1 2 3 4 5
первый цикл
первое.. запоминаем перове int temp = array[i]; temp=array[1]=1
второе.. присваиваем первому последнееarray[i]=array[array.length-1-i]; array[1]=array[5]=5
третье.. присваиваем последнему из первого действия.array[array.length-1-i]=temp; array[5]=temp=array[1]=1
таким образом первое и последние поменяли местами.
второй цикл
первое.. temp=array[2]=2
второе.. array[2]=array[4]=4
третье.. array[4]=temp=array[2]=2
последние
мы сэкономили на одном цикле.. т.к. деление на цело не затрагивает Середину.. т.е. 3 остается на своем месте.
но, в случае если бы было массив четной размерности мы бы не сэкономили.
допущение о начале счета с 1ы.. для простоты понимания.. все начинается с нуля
0
Kirill
8 January 2023, 09:54
Как я благодарен данному сообществу.
Разжуют все и положат в рот))))
Только сейчас полностью осознал весь этот код. Моя ошибка была, что я почему-то решил, что i это значение, а это индексы. Теперь я понял))
Благодарю!
+2
Kirill
8 January 2023, 09:55
Как я благодарен данному сообществу.
Разжуют все и положат в рот))))
Только сейчас полностью осознал весь этот код. Моя ошибка была, что я почему-то решил, что i это значение, а это индексы. Теперь я понял))
Благодарю!
0