Sortierung 2D-Array in C++

Ist es möglich, zu Sortieren eines 2D-Array mit qsort oder std::sort in C++, so dass die Elemente in aufsteigender Reihenfolge beim Lesen von Links nach rechts in jeder Zeile bzw. von oben nach unten in jeder Spalte?

Beispielsweise

13, 14, 15, 16
1, 4, 3, 2
7, 5, 7, 6
9, 10, 11, 12

Wird:

{ 1, 2, 3, 4 }
{ 5, 6, 7, 8 }
{ 9, 10, 11, 12 }
{ 13, 14, 15, 16 } 

Ich weiß, Sie können es tun, indem zwei Funktionen Vergleich und dann die erste Sortierung, die jede Zeile dann beim Vergleich der ersten Elemente in jeder Zeile zu etablieren Spalten, aber gibt es einen Weg, es zu tun in einer Funktion selbst?

Wenn es sich um eine NxN-matrix, dann kopiert die Elemente einer vector. Sortieren Sie die Vektor-und dann kopieren Sie jede Zeile wieder array von vector.
Nicht, dass nur die Zeilen zu Sortieren, obwohl? Was ist mit den Spalten?
Kopieren Sie es in ein Vektor-Art, die es als 1D-array (welches es jetzt ist), und kopieren Sie Sie dann zurück zu den 2D-array.
hmmm ... Wenn der gesamte Vektor wird sortiert, dann kopieren Sie es zurück an array Sortieren Sie die Spalten als gut. Zum Beispiel, wenn 4 ist an NxN-position dann käme es zu 1*N element nach dem Sortieren und kopieren der array - ( Hier N = 4).
Sie können versuchen, auf die Tatsache stützen, dass ein 2D-array ist lediglich die spezielle syntax und es ist angeordnet, die nacheinander im Speicher. Probieren Sie etwas wie: std::sort(&array2d[0][0], &array2d[0][0] + N*M, std::less<int>());

InformationsquelleAutor 1110101001 | 2013-10-08

Schreibe einen Kommentar