Сортировка динамического многомерного массива

В матрице размером NxM упорядочить элементы столбцов, содержащих нулевые элементы, по возрастанию методом простой вставки.

Моя сортировка выглядит так:

for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
        if (!matrix[j][i]) {
            for (i = 0; i < m; i++) {
                int min = i + 1;
                for (j = i+2; j < n; j++) {
                    if (matrix[j][i] < matrix[min][i]) {
                        min = j;
                        if (matrix[min][i] < matrix[j][i]) {
                            int t = matrix[min][i];
                            matrix[min][i] = matrix[j][i];
                            matrix[j][i] = t;
                        }
                    }
                }
            }
            break;
        }
    }
}

Но абсолютно не работает, ничего не сортируется, подскажите, как исправить ситуацию, заранее спасибо!


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

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

Во-первых, сортировка вставками выглядит совсем иначе.

Во-вторых, переменные внешних циклов i, j используются как счётчики во внутренних, и циклы работать не могут. Компилятор разве не предупредил о таком непотребстве?

Примерно так (не тестировал):

  if (!matrix[j][i]) {
        for (k = 1; k < n; k++) {
            int temp = matrix[k][i];
            int l = k;
            while (l>0) & (temp<matrix[l-1][i]) { 
                matrix[l][i] = matrix[l-1][i];      
                l--;
            }
            matrix[l][i] = temp;
        }
        break;
  }
→ Ссылка