Дана функция, которая сортирует побочные диагонали матрицы по возрастанию. Помогите разобраться в ней

Делала трассировку, но все равно не поняла, как именно все происходит. Помогите, пожалуйста, понять принцип. И написать комментарии к коду.

void bubble_sorting(int** m) {
    int N = 7;
    int  j, x1, y1, x2, y2;
    bool fl; 
    //
    for (j = 1; j < N; ++j) {
        do {
            fl = false;
            for (int i = j; i >= 1; --i) {
                
                x1 = i;
                y1 = j - 1;

                
                x2 = i - 1;
                y2 = j - (i - 1);
                if (m[x1][y1] < m[x2][y2]) {
                    swap(m[x1][y1], m[x2][y2]);
                    fl = true;
                }
            }
        } while (fl);
    }

    for (j = 1; j < N-1; ++j) {
        do {
            fl = false;
            for (int i = j; i >= 1; --i) {
                
                x1 = N - 1 - j + (i - 1);
                y1 = N - 1 - (i - 1);

                
                x2 = N - 1 - j + i;
                y2 = N - 1 - i;
                if (m[x1][y1] > m[x2][y2]) {
                    swap(m[x1][y1], m[x2][y2]);
                    fl = true;
                    }
                }
            } while (fl);
        }
    }
}

Ответы (0 шт):