Другие языки программирования и технологии

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

Подскажите, почему такой метод сортировки двумерного массива не работает с динамическим массивом:
void sort_up__(int **arr, int rows, int cols)
{
for (int k = 0; k < (rows*cols); k++)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (i + 1 == rows && j + 1 == cols)
{
continue;
}

else
{
if (j + 1 == cols && arr[i][j] > arr[i + 1][0])
{
int temp = arr[i + 1][0];
arr[i + 1][0] = arr[i][j];
arr[i][j] = temp;
}

else
{
if (arr[i][j] > arr[i][j + 1])
{
int temp = arr[i][j + 1];
arr[i][j + 1] = arr[i][j];
arr[i][j] = temp;
}
}
}
}
}
}

print__(arr, rows, cols);
}

Он сортирует но первые элементы пропадают
а вот такой пошлый вопрос: это принципиально - мудохаться с двумерными массивами?
квадратную матрицу NxN можно успешно запихнуть в одномерный массив
a[x][y] < - > a[x * N + y], и наоборот, a[i] < - > a[i/N][i%N]
_- Никитон (Leba)
_- Никитон (Leba)
95 865
Лучший ответ
Ermek Baspakov это не подходит под условия задачи. Массив наверняка используется в других частях программы, придётся всё переделывать.
Это ваш код, вам и разбираться. Где-то ошиблись с первыми 3ми элементами, в 3й строке уже всё плохо. Пора освоить методы отладки
- промежуточная печать
- точки останова
...
Maxim Golikov
Maxim Golikov
96 869
У тебя возможно индекс слетел где - то.
Как вариант:

#include < iostream >
#include < cstdlib >
#include < ctime >
#include < iomanip >
#include < algorithm >
#include < vector >

using namespace std;

void main()
{
setlocale(LC_ALL, "rus");
srand(time(0)); // генерация случайных чисел
cout << "Введите размеры массива ";
unsigned m, n;
cin >> m >> n;

int **a = new int*[m];
for (unsigned count = 0; count < m; count++)
a[count] = new int[n];

vector < int > v;
cout << "Исходный массив" << endl;
for (unsigned count_row = 0; count_row < m; count_row++)
{
for (unsigned count_column = 0; count_column < n; count_column++)
{
a[count_row][count_column] = rand() % 101;
v.push_back(a[count_row][count_column]);
cout << setw(4) << a[count_row][count_column];
}
cout << endl;
}
sort(v.begin(), v.end());

cout << "Преобразованный массив" << endl;
unsigned g = 0;
for (unsigned i = 0; i < m; ++i)
{
for (unsigned u = 0; u < n; ++u)
{
a[i][u] = v[g];
++g;
cout << setw(4) << a[i][u];
}
cout << endl;
}

for (int count = 0; count < m; count++)
delete[]a[count];
cin.get(); cin.get();
}
ИЧ
Иван Чиркин
8 552