Maison >développement back-end >C++ >Comment trier un tableau multidimensionnel par le premier élément de chaque sous-tableau en C ?

Comment trier un tableau multidimensionnel par le premier élément de chaque sous-tableau en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-25 21:58:151010parcourir

How to Sort a Multi-Dimensional Array by the First Element of Each Subarray in C  ?

Tri des tableaux multidimensionnels par premier élément du sous-tableau en C

Pour trier un tableau multidimensionnel par le premier élément de chaque sous-tableau, il est recommandé d'adopter une approche de tri indirect plutôt que de manipuler directement le tableau. Cela implique de créer un tableau d'indices qui pointent vers le tableau d'origine et de trier les indices en fonction des critères souhaités.

Implémentation

Voici un exemple d'implémentation en C :

#include <algorithm>

int main() {
    // Sample array of arrays
    int timeTable[3][2] = {{4, 204}, {10, 39}, {1, 500}};

    // Create an array of indices to use for sorting
    int indices[3] = {0, 1, 2};

    // Sort indices based on the first element of each subarray in timeTable
    std::sort(indices, indices + 3, [](int i1, int i2) { 
        return timeTable[i1][0] < timeTable[i2][0]; 
    });

    // Access the sorted subarrays using the sorted index array
    for (int i = 0; i < 3; ++i) {
        std::cout << "Subarray at index " << indices[i] 
                  << ": [" << timeTable[indices[i]][0] << ", " 
                  << timeTable[indices[i]][1] << "]" << std::endl;
    }
}

Exemple

Pour l'exemple de tableau timeTable, le résultat serait :

Subarray at index 0: [1, 500]
Subarray at index 1: [4, 204]
Subarray at index 2: [10, 39]

Avantages du tri indirect

Cette méthode de tri indirect offre plusieurs avantages par rapport au tri direct :

  • Efficacité de la mémoire : Il ne nécessite pas d'espace de stockage supplémentaire pour une copie temporaire de l'original tableau.
  • Performance : Le tri des indices est généralement plus rapide que la manipulation directe du tableau d'origine.
  • Flexibilité : Il est plus facile de modifier les critères de tri , car cela implique uniquement de modifier le prédicat de tri dans le std::sort appel.
  • Maintenabilité : Le code est plus lisible et maintenable, car il évite les opérations complexes sur des tableaux multidimensionnels.

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