2016-11-27 2 views
-3

Ich möchte eine 4X4-Matrix (2D-Array) nach Spalte und Zeile sortieren. Zum Beispiel:Wie sortiere ich eine Matrix (2D-Array) in c?

Original-Matrix:

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

Wunschergebnis:

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

+3

I t es ist eine tatsächliche 2D-Array (und kein Array von Zeigern), können Sie einfach ['qsort'] (http://en.cppreference.com/w/c/algorithm/qsort), und übergeben Sie die Adresse der erstes Element '& mat [0] [0]' als Pufferadresse. – StoryTeller

+0

Wenn es sich nicht um ein Array von Arrays handelt (auch als "2d-Array" bezeichnet), dann lege alle Werte in ein einziges eindimensionales Array, sortiere dieses Array und lege die Werte zurück in die Matrix. –

+0

Es sieht so aus, als ob Sie tatsächlich ein 1D-Array sortieren, das als 2D-Array getarnt ist. Darf ich fragen, warum Sie das brauchen? –

Antwort

2

2D-Array verwendet grundsätzlich contigous Speicherplatz, so dass Sie es gleich wie Sie sortieren 1D-Array sortieren

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; 
}