Heim > Backend-Entwicklung > C++ > Hauptteil

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

Mary-Kate Olsen
Freigeben: 2024-11-08 12:24:01
Original
378 Leute haben es durchsucht

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

Sortieren eines 2D-Arrays nach Spaltenwerten mithilfe integrierter Funktionen oder benutzerdefinierter Methoden in C

In C gibt es im Gegensatz zu Java keine direkte integrierte Funktion kann ein 2D-Array nach bestimmten Spaltenwerten sortieren. Es können jedoch verschiedene Ansätze verwendet werden, um dieses gewünschte Sortierverhalten zu erreichen.

Verwendung von C-Standardbibliotheksfunktionen

Eine Methode beinhaltet die Verwendung der std::qsort-Funktion, bei der es sich um einen generischen Sortieralgorithmus handelt. Durch die Definition einer benutzerdefinierten Komparatorfunktion können Sie die Sortierlogik basierend auf den Spaltenwerten steuern. Hier ist eine Beispielimplementierung:

<code class="cpp">#include <iostream>
#include <algorithm>

int compareArrayColumns(int **lhs, int **rhs) {
  return (*lhs)[0] < (*rhs)[0];
}

int main() {
  int arr[][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  std::qsort(arr, 5, sizeof(*arr), (int (*)(const void *, const void *))compareArrayColumns);

  for (int i = 0; i < 5; ++i) {
    std::cout << arr[i][0] << " " << arr[i][1] << std::endl;
  }

  return 0;
}</code>
Nach dem Login kopieren

In diesem Code wird die Funktion „compareArrayColumns“ verwendet, um die ersten Spaltenwerte jeder Arrayzeile zu vergleichen. Die Sortierung wird mit der Funktion std::qsort durchgeführt und das sortierte 2D-Array wird gedruckt.

Verwendung benutzerdefinierter Methoden

Ein anderer Ansatz besteht darin, benutzerdefinierte Sortierfunktionen zu erstellen, die die gewünschte Logik implementieren. Hier ist eine Beispielimplementierung mit einer Blasensortierung:

<code class="cpp">#include <iostream>

void bubbleSortByColumn(int arr[][2], int size) {
  for (int i = 0; i < size; ++i) {
    for (int j = 0; j < size - 1; ++j) {
      if (arr[j][0] > arr[j + 1][0]) {
        int temp[2];
        temp[0] = arr[j][0];
        temp[1] = arr[j][1];
        arr[j][0] = arr[j + 1][0];
        arr[j][1] = arr[j + 1][1];
        arr[j + 1][0] = temp[0];
        arr[j + 1][1] = temp[1];
      }
    }
  }
}

int main() {
  int arr[][2] = {
    {20, 11},
    {10, 20},
    {39, 14},
    {29, 15},
    {22, 23}
  };

  int size = sizeof(arr) / sizeof(arr[0]);
  bubbleSortByColumn(arr, size);

  for (int i = 0; i < size; ++i) {
    std::cout << arr[i][0] << " " << arr[i][1] << std::endl;
  }

  return 0;
}</code>
Nach dem Login kopieren

In diesem Code implementiert die Funktion „bubbleSortByColumn“ einen einfachen Blasensortierungsalgorithmus, der das Array durchläuft und Zeilen basierend auf den Werten der ersten Spalte austauscht. Das sortierte 2D-Array wird dann gedruckt.

Die Wahl des Ansatzes hängt von den spezifischen Anforderungen und Leistungsaspekten Ihrer Anwendung ab.

Das obige ist der detaillierte Inhalt vonWie sortiere ich ein 2D-Array nach Spaltenwerten in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!