Реверс массива в Java. Описание логики
Данный код возвращает массив, в котором элементы расположены в обратном порядке. Код рабочий, но я не могу понять логики, что делает каждая строчка, почему всё именно так.
Может ли кто-нибудь описать подробно работу каждой строчки?
public int[] reverseArray(int[] values) {
for (int i = 0; i < values.length / 2; i++) ;
{
int start = 0;
int end = values.length - 1;
while (start < end) {
int temp = values[start];
values[start] = values[end];
values[end] = temp;
start++;
end--;
}
return values;
}
}
Ответы (1 шт):
Автор решения: Dmitry Shelemeh
→ Ссылка
Я добавил коменты к вашему коду. Можно было бы более подробно описать.. Но пока не стал загружать про void или возвращаемый тип. Надеюсь станет проще с пониманием :)
public int[] reverseArray(int[] values) {
// Цикл который пройдет по массиву с начала до половины его длинны, нет смысла идти дальше :)
for (int i = 0; i < values.length / 2; i++) ;
{
int start = 0; //начало счётчика 0
int end = values.length - 1; // конец - последний элемент массива
while (start < end) { // цикл будет выполняться пока условие start<end истино
int temp = values[start]; //создаётся временная переменная для хранения значения массива, что бы это значение не затерялось при перестановке. Присваиваем tmp значение первого элемента массива
values[start] = values[end]; // начинается перестановка, обращение к элементу массива происходит по индексу, присваиваем первому элементу массива значение последнего элемента
values[end] = temp; //присваиваем последнему элементу массива значение переменной tmp, в которой хранили значение первого элемента
start++; //увеличиваем значение счётчика на единицу, что бы в цикле перейти к следующему элементу. Первый элемент уже переставлен.
end--;//по аналогии уменьшаем значение счётчика, что бы в цикле обратится к следующему элементу с конца.
}
return values; //когда счетчик start станет больше end, цикл закончится, и метод вернёт получившийся массив values.
}
}