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.
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>
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.
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>
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!