如何在c中对矩阵(2D数组)进行排序?
我想按列和行对4X4矩阵(2D数组)进行排序。例如: 原始矩阵:如何在c中对矩阵(2D数组)进行排序?,c,arrays,C,Arrays,我想按列和行对4X4矩阵(2D数组)进行排序。例如: 原始矩阵: 6294 4 5 -1 9 4 -2 0 7 3 2 10 3 预期结果: -2-102 2 3 3 4 4 4 5 6 7 9 9 102D数组基本上使用连续的内存位置,所以您可以将其排序为与对1D数组排序相同的顺序 const int row = 4,col = 4; int mat[row][col] = {6 , 2 , 9 , 4
6294
4 5 -1 9
4 -2 0 7
3 2 10 3
预期结果:
-2-102
2 3 3 4
4 4 5 6
7 9 9 10
2D数组基本上使用连续的内存位置,所以您可以将其排序为与对1D数组排序相同的顺序
const int row = 4,col = 4;
int mat[row][col] = {6 , 2 , 9 , 4
,4 , 5 , -1 , 9
,4 ,-2 , 0 , 7
,3 ,2 , 10 , 3};
sort(&mat[0][0],&mat[0][0]+(row*col));
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
cout<<mat[i][j]<<" ";
cout<<endl;
}
const int行=4,列=4;
int mat[row][col]={6,2,9,4
,4 , 5 , -1 , 9
,4 ,-2 , 0 , 7
,3 ,2 , 10 , 3};
排序(&mat[0][0],&mat[0][0]+(行*列));
对于(int i=0;iIt,它是一个实际的2D数组(而不是指针数组),您可以使用并传递第一个元素&mat[0][0]
的地址作为缓冲区地址。如果它不是数组数组(也称为“2D数组”)然后将所有值放在一个一维数组中,对该数组进行排序,然后将值放回矩阵中。看起来你实际上是在对一个伪装成二维数组的一维数组进行排序。我可以问一下你为什么需要这个吗?使用一种排序算法,如气泡排序等