Используя ваш код, используйте только std::sort
в каждой строке многомерного массива. то есть.
#include <iostream>
using namespace std;
int main(){
int a[2][3];
a[0][0]=1;
a[0][1]=7;
a[0][2]=3;
a[1][0]=6;
a[1][1]=2;
a[1][2]=5;
for(int i = 0; i < 2; i++) {
sort(a[i],a[i]+3);
}
for(int row = 0; row < 2; row++) {
for(int col = 0; col < 2; col++) {
cout << a[row][col] << " ";
}
}
return 0;
}
Я инициировал каждый элемент вашего многомерного массива a
, так как ваш объявлен a
быть размером 6 (2 строки, 3 столбца). Это приведет к выводу 1 3 7 2 5 6
, поскольку сортирует строки от наименьшего до наибольшего. Если вы хотите, чтобы отсортировать многомерный массив, так что выход будет читать 1 2 3 5 6 7
, то вам нужно будет сделать что-то вроде этого:
#include <iostream>
using namespace std;
int main(){
int a[2][3];
int b[6];
int count = 0;
a[0][0]=1;
a[0][1]=7;
a[0][2]=3;
a[1][0]=6;
a[1][1]=2;
a[1][2]=5;
for(int row = 0; row < 2; row++) {
for(int col = 0; col < 3; col++) {
b[count] = a[row][col];
count++;
}
}
sort(b, b+6);
count = 0;
for(int row = 0; row < 2; row++) {
for(int col = 0; col < 3; col++) {
a[row][col] = b[count];
count++;
}
}
for(int row = 0; row < 2; row++) {
for(int col = 0; col < 3; col++) {
cout << a[row][col] << " ";
}
}
return 0;
}
Это второй пример, пожалуй, худший из возможных способов идти о сортировке многомерного массива, хотя. Дайте мне знать, если вы обнаружите ошибку в моем коде, я не смог протестировать или вам нужна дополнительная помощь.
Это может или не поможет ... http://stackoverflow.com/questions/14092642/sorting-a-2-dimensional-array-in-c – doovers
Вы также должны включить заголовок алгоритма. –