Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich ein 2D-Array in C mit qsort()?

Wie sortiere ich ein 2D-Array in C mit qsort()?

Susan Sarandon
Susan SarandonOriginal
2024-11-05 06:53:02370Durchsuche

How to Sort a 2D Array in C   Using 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn