Maison > Article > développement back-end > Comment trier un tableau 2D en C à l’aide de fonctions intégrées ou de méthodes personnalisées ?
Tri d'un tableau 2D en C avec des fonctions intégrées ou des méthodes alternatives
Tri d'un tableau 2D en C présente un défi unique, car les fonctions intégrées telles que std::sort() sont généralement conçues pour les tableaux 1D. Cependant, il existe des cas spécifiques dans lesquels vous souhaiterez peut-être trier un tableau 2D en fonction de critères spécifiques, tels que comparer uniquement les valeurs de la première colonne.
Utiliser std::qsort
Bien que C ne dispose pas d'une fonction intégrée directe pour le tri multi-colonnes, std::qsort() offre une solution polyvalente. Cette fonction prend un pointeur vers un tableau, la taille du tableau, la taille des éléments du tableau et une fonction de comparaison. En fournissant une fonction de comparaison personnalisée, vous pouvez spécifier les critères de tri en fonction d'éléments spécifiques du tableau.
Fonction de comparaison pour le tri personnalisé
La fonction de comparaison doit renvoyer un résultat entier basé sur la comparaison de deux éléments du tableau. Dans le cas d'un tableau 2D, vous devrez accéder à des éléments individuels à l'aide de l'arithmétique du pointeur. Prenons l'exemple suivant :
<code class="cpp">int qsort_compare(const void *arg1, const void *arg2) { int const *lhs = static_cast<int const*>(arg1); int const *rhs = static_cast<int const*>(arg2); return (lhs[0] < rhs[0]) ? -1 : ((rhs[0] < lhs[0]) ? 1 : (lhs[1] < rhs[1] ? -1 : ((rhs[1] < lhs[1] ? 1 : 0)))); }
Cette fonction de comparaison compare le premier élément (équivalent à la valeur de la première colonne) et renvoie un ordre approprié en fonction du résultat.
Exemple de mise en œuvre
En combinant std::qsort() et la fonction de comparaison personnalisée, vous pouvez trier un tableau 2D en C comme suit :
<code class="cpp">#include <iostream> #include <algorithm> 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 << "Sorted 2D Array:" << endl; for (int i = 0; i < 5; i++) { cout << ar[i][0] << " " << ar[i][1] << endl; } return 0; }</code>
Sortie :
Sorted 2D Array: 10 20 20 11 22 23 29 15 39 14
Cette méthode fournit une solution complète et efficace pour trier les tableaux 2D en C , bien qu'elle nécessite la création et l'utilisation d'une fonction de comparaison personnalisée.
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!