Tri d'un tableau 2D en C : fonctions intégrées et implémentations personnalisées
Introduction
Le tri de tableaux multidimensionnels en C peut être une tâche complexe. Cet article explore les capacités des fonctions intégrées et fournit une implémentation personnalisée pour trier efficacement un tableau 2D en fonction des valeurs de colonne.
Fonctions intégrées
Offres C fonctions intégrées limitées pour trier les tableaux multidimensionnels. La fonction std::qsort permet de trier des tableaux de taille fixe de tout type. Cependant, il ne fournit pas de fonctionnalités directes pour trier les tableaux multi-colonnes.
Implémentation personnalisée
Pour le tri multi-colonnes, une implémentation personnalisée utilisant une fonction de comparaison peut être utilisé. Cette approche nécessite d'adapter la fonction std::sort intégrée, qui opère par défaut sur les éléments par ordre croissant.
La fonction de comparaison prend deux tableaux comme entrées et les compare en fonction de la valeur de colonne souhaitée. Dans votre cas, vous souhaitez trier le tableau 2D en comparant les valeurs de la première colonne. Voici une implémentation en C :
<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)))); }
Dans ce comparateur, nous cascadeons des instructions ternaires pour comparer les valeurs de la première colonne, puis les valeurs de la deuxième colonne pour rompre les égalités.
Utilisation
Pour trier le tableau à l'aide du comparateur, vous pouvez appeler la fonction std::sort avec le tableau et le comparateur comme arguments :
<code class="cpp">std::sort(std::begin(ar), std::end(ar), comparator);
Exemple
Voici un exemple qui illustre la mise en œuvre du tri personnalisé :
<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>
Sortie :
10 20 20 11 22 23 29 15 39 14
Conclusion
Bien que C ne dispose pas de fonctions intégrées dédiées pour le tri des tableaux multi-colonnes, l'implémentation personnalisée utilisant une fonction de comparaison fournit une solution efficace et flexible. Cette approche vous permet de préciser les critères de tri souhaités et de personnaliser le comportement de tri en fonction de vos besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!