Дана функция, которая сортирует побочные диагонали матрицы по возрастанию. Помогите разобраться в ней
Делала трассировку, но все равно не поняла, как именно все происходит. Помогите, пожалуйста, понять принцип. И написать комментарии к коду.
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);
}
}
}