Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich ein 2D-Array in C nach Spaltenwerten?

Wie sortiere ich ein 2D-Array in C nach Spaltenwerten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 01:43:02354Durchsuche

How to Sort a 2D Array in C   by Column Values?

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!

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