Сортировка динамического многомерного массива
В матрице размером 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;
}