Maison > développement back-end > C++ > le corps du texte

Comment trier un tableau 2D en C à l'aide de fonctions intégrées ou de méthodes personnalisées ?

DDD
Libérer: 2024-11-06 04:06:02
original
878 Les gens l'ont consulté

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

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))));
}
Copier après la connexion

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>
Copier après la connexion

Sortie :

Sorted 2D Array:
10 20
20 11
22 23
29 15
39 14
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal