Heim > Artikel > Backend-Entwicklung > Wie sortiere ich ein 2D-Array in C mit qsort()?
Sortieren eines 2D-Arrays in C mit qsort()
Wenn man vor der Aufgabe steht, ein 2D-Array zu sortieren, kann man die Verwendung von „built“ in Betracht ziehen -in-Funktionen zur Vereinfachung des Prozesses. In C ist die Funktion qsort() ein leistungsstarkes Werkzeug für diesen Zweck. Im Gegensatz zu seinem Gegenstück sort() zeichnet sich qsort durch die Handhabung der mehrspaltigen Sortierung für feste Arrays aus.
Die Komparatorfunktion in qsort() verfolgt einen einzigartigen Ansatz und nutzt eine Reihe ternärer Anweisungen, um Elemente effektiv zu vergleichen. Das Ergebnis ist ein Algorithmus, der das Sortieren von Arrays basierend auf bestimmten Spaltenwerten geschickt handhabt.
Betrachten Sie das folgende Beispiel, in dem ein 2D-Array mit Zufallsdaten gefüllt ist und eine Sortierung basierend auf seiner ersten Spalte erfordert:
<code class="cpp">#include <iostream> #include <random> #include <algorithm> int main() { int ar[10][2]; // Populate array with random data std::random_device rd; std::default_random_engine rng(rd()); std::uniform_int_distribution<> dist(1, 20); std::for_each(std::begin(ar), std::end(ar), [&](int(&ar)[2]) { ar[0] = dist(rng); ar[1] = dist(rng); }); // Sort the array std::qsort(ar, 10, sizeof(*ar), [](const void *arg1, const void *arg2) -> int { 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)))); }); // Display sorted array std::for_each(std::begin(ar), std::end(ar), [](const int(&ar)[2]) { std::cout << ar[0] << ',' << ar[1] << '\n'; }); return 0; }</code>
In diesem Beispiel stellt der Komparator sicher, dass die Werte der ersten Spalte sorgfältig verglichen werden, um die gewünschte Sortierung zu erreichen. Durch die Nutzung von qsort() und die Anpassung des Komparators an Ihre spezifischen Anforderungen können Sie 2D-Arrays in C effizient sortieren und so die Datenbearbeitung zum Kinderspiel machen.
Das obige ist der detaillierte Inhalt vonWie sortiere ich ein 2D-Array in C mit qsort()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!