Мне необходимо отсортировать созданную при помощи двумерного динамического массива матрицу так, чтобы сначала шли отрицательные числа, не создавая при этом дополнительной матрицы, M - кол-во стобцов N - кол-во строк, код привел ниже, получается так что отрицательные числа остаются просто в правой части матрицы, я не понимаю в чем проблема
#include <iostream>
#include <ctime>
#include <iomanip> /*iomanip тут просто чтобы красиво было*/
using namespace std;
void main() {
setlocale(LC_ALL, "Russian");
srand(time(NULL));
cout << "Введите количество строк в матрице А: ";
int N;
cin >> N;
cout << "Введите количество столбцов в матрице А: ";
int M;
cin >> M;
int** A = new int* [N];
for (int i = 0; i < N; i++) {
A[i] = new int[M];
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
A[i][j] = rand() % 21 - 10;
}
}
cout << "Созданная матрица A" << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cout << setw(3) << A[i][j] << " ";
}
cout << endl;
}
cout << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
int minusI = i;
int minusJ = j;
for (int currentElement = 0; currentElement < M; currentElement++) {
if (A[i][currentElement] < 0) {
int temp;
temp = A[i][currentElement];
A[i][currentElement] = A[minusI][minusJ];
A[minusI][minusJ] = temp;
}
}
}
}
cout << "Матрица в отсортированном виде: " << endl;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cout << setw(3) << A[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < N; i++) {
delete[] A[i];
}
delete[] A;
system("pause");
}