Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中对矩阵(2D数组)进行排序?_C_Arrays - Fatal编程技术网

如何在c中对矩阵(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

我想按列和行对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 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数组”)然后将所有值放在一个一维数组中,对该数组进行排序,然后将值放回矩阵中。看起来你实际上是在对一个伪装成二维数组的一维数组进行排序。我可以问一下你为什么需要这个吗?使用一种排序算法,如气泡排序等