„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie sortiere ich ein 2D-Array in C++ mithilfe integrierter Funktionen oder benutzerdefinierter Methoden?

Wie sortiere ich ein 2D-Array in C++ mithilfe integrierter Funktionen oder benutzerdefinierter Methoden?

Veröffentlicht am 20.11.2024
Durchsuche:466

How do I sort a 2D array in C   using built-in functions or custom methods?

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.

Verwenden 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:

int qsort_compare(const void *arg1, const void *arg2) {
  int const *lhs = static_cast(arg1);
  int const *rhs = static_cast(arg2);
  return (lhs[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 sortieren als folgt:

#include 
#include 

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 

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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3