2016-11-27 26 views
-3

4X4行列(2D配列)を列と行でソートする必要があります。例えば:cで行列(2次元配列)をソートする方法は?

オリジナル行列:

6 2 9 4 4 5 -1 9 4 -2 0 7 3 2 10 3

所望の結果:

-2 -1 0 2 2 3 3 4 4 4 5 6 7 9 9 10

+3

実際の2D配列(ポインタの配列ではありません)であれば、['qsort'](http://en.cppreference.com/w/c/algorithm/qsort)を使用して、最初の要素 '&mat [0] [0]'をバッファアドレスとして返します。 – StoryTeller

+0

配列の配列(a.k.a. "2d配列")でない場合は、すべての値を単一の1次元配列に入れ、その配列をソートしてから、値を再び行列に入れます。 –

+0

2Dのように見せかける1D配列を実際にソートしているようです。なぜあなたはこれが必要なのか尋ねてもいいですか? –

答えて

2

2Dアレイは、基本的contigousメモリ位置を使用するため、あなたがソート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; 
}