Реверс массива в 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.
    }
}
→ Ссылка