Sortieren eines 2D-Arrays in C mit integrierten Funktionen oder alternativen Methoden
Das Sortieren eines 2D-Arrays in C stellt eine einzigartige Herausforderung dar Integrierte Funktionen wie std::sort() sind normalerweise für 1D-Arrays konzipiert. Es gibt jedoch bestimmte Fälle, in denen Sie ein 2D-Array möglicherweise nach bestimmten Kriterien sortieren möchten, z. B. indem Sie nur die Werte der ersten Spalte vergleichen.
Verwendung von std::qsort
Während in C eine direkt integrierte Funktion für die mehrspaltige Sortierung fehlt, bietet std::qsort() eine vielseitige Lösung. Diese Funktion benötigt einen Zeiger auf ein Array, die Größe des Arrays, die Größe der Elemente innerhalb des Arrays und eine Vergleichsfunktion. Durch die Bereitstellung einer benutzerdefinierten Vergleichsfunktion können Sie die Sortierkriterien basierend auf bestimmten Array-Elementen angeben.
Komparatorfunktion für benutzerdefinierte Sortierung
Die Vergleichsfunktion muss ein ganzzahliges Ergebnis zurückgeben basierend auf dem Vergleich zweier Array-Elemente. Im Fall eines 2D-Arrays müssten Sie mithilfe der Zeigerarithmetik auf einzelne Elemente zugreifen. Betrachten Sie das folgende Beispiel:
<code class="cpp">int qsort_compare(const void *arg1, const void *arg2) { int const *lhs = static_cast<int const*>(arg1); int const *rhs = static_cast<int const*>(arg2); return (lhs[0] < rhs[0]) ? -1 : ((rhs[0] < lhs[0]) ? 1 : (lhs[1] < rhs[1] ? -1 : ((rhs[1] < lhs[1] ? 1 : 0)))); }
Diese Komparatorfunktion vergleicht das erste Element (entspricht dem ersten Spaltenwert) und gibt basierend auf dem Ergebnis eine entsprechende Reihenfolge zurück.
Beispielimplementierung
Durch die Kombination von std::qsort() und der benutzerdefinierten Vergleichsfunktion können Sie ein 2D-Array in C wie folgt sortieren:
<code class="cpp">#include <iostream> #include <algorithm> using namespace std; int main() { int ar[5][2] = { {20, 11}, {10, 20}, {39, 14}, {29, 15}, {22, 23} }; qsort(ar, 5, sizeof(*ar), qsort_compare); cout << "Sorted 2D Array:" << endl; for (int i = 0; i < 5; i++) { cout << ar[i][0] << " " << ar[i][1] << endl; } return 0; }</code>
Ausgabe:
Sorted 2D Array: 10 20 20 11 22 23 29 15 39 14
Diese Methode bietet eine umfassende und effiziente Lösung zum Sortieren von 2D-Arrays in C, erfordert jedoch die Erstellung und Verwendung einer benutzerdefinierten Vergleichsfunktion.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein 2D-Array in C mithilfe integrierter Funktionen oder benutzerdefinierter Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!