Обмен строк статической матрицы

Воспользовался материалами: ссылка 1 ссылка 2

К сожалению не смог интерпретировать это на свой случай.
Идея простая, есть двоичная матрица xyz:

XY Y1 Y2 ... Yn
X1 Z11 Z12 ... Z1n
X2 Z21 Z22 ... Z2n
.. ... ... ... ...
Xn Zn1 Zn2 ... Znn

Требуется отсортировать по строкам через указатели
Вот код:

    void sort_matrix(double mtr[10][10], int n, int m) {
    // sort by x
        for (int j = 1; j < n - 1; j++) {
            if (mtr[j][0] > mtr[j + 1][0]) {
                double *addr1 = &mtr[j];
                double *addr2 = &mtr[j + 1];
                double *temp = addr1;
                addr1 = addr2;
                addr2 = temp;
            } 
        }
}

Не работает сортировка ни по отдельности для строк или столбцов, ни вместе
Как этот код привести в порядок?


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

Автор решения: Harry

Для начала - тут

double *addr1 = &mtr[j][0];
double *addr2 = &mtr[j + 1][0];
double *temp = addr1;
addr1 = addr2;
addr2 = temp;

вы просто меняете местами содержимое двух переменных - адреса элементов массива, но никак не сами элементы!

double temp = mtr[j][0];
mtr[j][0] = mtr[j+1][0]
mtr[j+1][0] = temp;

куда больше толку...

Дальше - а что вы хотите в конечном итоге? Допустим, вы отсортировали по строкам, но, сортируя по столбцам, вы же опять перемешаете строки.

Какова конечная цель?

→ Ссылка