Heim > Artikel > Backend-Entwicklung > Wie sortiere ich ein 2D-Array in C nach Spaltenwerten?
Sortieren eines 2D-Arrays in C: Integrierte Funktionen und benutzerdefinierte Implementierungen
Einführung
Das Sortieren mehrdimensionaler Arrays in C kann eine komplexe Aufgabe sein. Dieser Artikel untersucht die Fähigkeiten integrierter Funktionen und bietet eine benutzerdefinierte Implementierung zum effektiven Sortieren eines 2D-Arrays basierend auf Spaltenwerten.
Eingebaute Funktionen
C bietet eingeschränkte integrierte Funktionen zum Sortieren mehrdimensionaler Arrays. Die Funktion std::qsort ermöglicht das Sortieren von Arrays mit fester Größe beliebiger Art. Es bietet jedoch keine direkten Funktionen zum Sortieren mehrspaltiger Arrays.
Benutzerdefinierte Implementierung
Für die mehrspaltige Sortierung kann eine benutzerdefinierte Implementierung mithilfe einer Komparatorfunktion verwendet werden genutzt. Dieser Ansatz erfordert eine Anpassung der integrierten std::sort-Funktion, die standardmäßig Elemente in aufsteigender Reihenfolge bearbeitet.
Die Komparatorfunktion verwendet zwei Arrays als Eingaben und vergleicht sie basierend auf dem gewünschten Spaltenwert. In Ihrem Fall möchten Sie das 2D-Array sortieren, indem Sie die Werte der ersten Spalte vergleichen. Hier ist eine C-Implementierung:
<code class="cpp">int comparator(int const *lhs, int const *rhs) { return (lhs[0] < rhs[0]) ? -1 : ((rhs[0] < lhs[0]) ? 1 : (lhs[1] < rhs[1] ? -1 : ((rhs[1] < lhs[1] ? 1 : 0)))); }
In diesem Komparator kaskadieren wir ternäre Anweisungen, um die Werte der ersten Spalte und dann die Werte der zweiten Spalte zu vergleichen, um Verbindungen zu lösen.
Verwendung
Um das Array mithilfe des Komparators zu sortieren, können Sie die Funktion std::sort mit dem Array und dem Komparator als Argumente aufrufen:
<code class="cpp">std::sort(std::begin(ar), std::end(ar), comparator);
Beispiel
Hier ist ein Beispiel, das die Implementierung der benutzerdefinierten Sortierung demonstriert:
<code class="cpp">#include <iostream> #include <algorithm> int ar[10][2] = { {20, 11}, {10, 20}, {39, 14}, {29, 15}, {22, 23} }; int main() { int comparator(int const *lhs, int const *rhs); // Sort the array std::sort(std::begin(ar), std::end(ar), comparator); // Display the sorted array for (int i = 0; i < 10; i++) { std::cout << ar[i][0] << " " << ar[i][1] << '\n'; } return 0; }</code>
Ausgabe:
10 20 20 11 22 23 29 15 39 14
Schlussfolgerung
Während C dedizierte integrierte Funktionen für die mehrspaltige Array-Sortierung fehlen, bietet die benutzerdefinierte Implementierung mithilfe einer Komparatorfunktion eine effiziente und flexible Lösung. Mit diesem Ansatz können Sie die gewünschten Sortierkriterien festlegen und das Sortierverhalten an Ihre spezifischen Anforderungen anpassen.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein 2D-Array in C nach Spaltenwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!