Maison  >  Article  >  développement back-end  >  Comment trier un tableau 2D en C par valeurs de colonne ?

Comment trier un tableau 2D en C par valeurs de colonne ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-06 01:43:02292parcourir

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

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!

Déclaration:
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