JavaRush /Java блог /Архив info.javarush /Ребят, накидайте, пожалуйста, кто нибудь разобранный (с п...
qzmi4meister
9 уровень
Москва

Ребят, накидайте, пожалуйста, кто нибудь разобранный (с построчными комментариями) код алгоритма инверсии массива от середины.

Статья из группы Архив info.javarush
Три задачи висит с ним, нашел готовые алгоритмы, но не понимаю как они работают. Спасибо заранее.
Комментарии (8)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
AndreGold Уровень 28
21 апреля 2015
что значит инверсия массива с середины? Как вижу это я не придумывая «велосипеда».
Инверсия — это изменения порядка элементов в массиве на противоположный

// Выделяем память под массив и присваиваем переменной А ссылку на массив
        int A[] = new int[20];

        // Заполняем массив А[20] элементов
        for (int i = 0; i < A.length; i++)
        {
            A[i] = i;
        }

        System.out.println("Массив А :");
        for (Integer integer : A)
        {
            System.out.print(integer + " "); // Массив А : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
        }

        // Создадим 2 массива на 10 элементов
        int B[] = new int[10];
        int C[] = new int[10];

        //Заполним массив B первыми 10 элементами массива А
        for (int i = 0; i < B.length; i++)
        {
            B[i] = A[i];
        }

        System.out.println();
        System.out.println("Массив B :");
        for (Integer integer : B)
        {
            System.out.print(integer + " "); // Массив B : 0 1 2 3 4 5 6 7 8 9
        }

        // Заполним массив C последующими 10 элементами массива А, но для этого в цикле for нам нужны 2 переменные счетчики
        for (int i = 0, j = 10; i < C.length && j < A.length ; i++,j++)
        {
            C[i] = A[j];
        }

        System.out.println();
        System.out.println("Массив C :");
        for (Integer integer : C)
        {
            System.out.print(integer + " "); // Массив C : 10 11 12 13 14 15 16 17 18 19
        }

        // обнулим перезапишем элементы массива А
        for (int a = 0, b = B.length - 1, c = C.length - 1; (a < A.length && b >= 0) ||c >= 0; a++)
        {
            if (a < 10){
                A[a] = B[b];
                b--;
            }
            if (a >= 10){
igor Уровень 25
21 апреля 2015
Напиши свой алгоритм на листочке, тогда все будет проще.