Т.е. результат должен выглядеть так:
1 2 3 4
5 6 7 8
ЧЕМ это можно сделать?
qsort не хочет. Думал, а вдруг кто-то адресной арифметикой баловался при его написании, хотя это вряд ли кто-то делал, ведь сортировка Хоара для этого не сильно подходит.

const int n_cols = 5;
const int n_rows = 2;
int arr[n_rows][n_cols] =
{
{ 4, 6, 8, 9, 1 },
{ 7, 0, 2, 3, 5 }
};
// ...
std::sort(*arr, *arr + n_rows * n_cols);
// ...
int **arr = new int*[n_rows];) как раз-таки и расположен черт знает как. Одна строка может быть здесь, другая - где-то в другом месте...
for(int i = 0; i < n_rows; ++i)
{
arr[i] = new int[n_cols];
// ...
}