Maison >développement back-end >C++ >Comment puis-je trier efficacement un tableau de sous-tableaux en fonction de leur premier élément ?

Comment puis-je trier efficacement un tableau de sous-tableaux en fonction de leur premier élément ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-14 21:55:02414parcourir

How Can I Sort an Array of Subarrays Based on Their First Element Efficiently?

Le tri des tableaux en fonction du premier élément de leurs sous-tableaux pose un défi. Plutôt que de manipuler le tableau directement, envisagez une approche alternative.

Créez un tableau d'indices faisant référence au tableau d'origine. Triez les indices en fonction du premier élément des sous-tableaux à ces indices.

Cette stratégie présente plusieurs avantages :

  1. Elle est plus efficace que de trier le tableau d'origine lui-même.
  2. Il préserve l'ordre d'origine du tableau.
  3. Il simplifie la gestion des tris complexes critères.

Voici un exemple en C :

#include <algorithm>
#include <iostream>

int main()
{
    int index[3] = {0, 1, 2};
    int timeTable[3][2] = {{4, 204}, {10, 39}, {1, 500}};
    std::sort(index, index + 3, [&timeTable](int n1, int n2) {
        return timeTable[n1][0] < timeTable[n2][0];
    });

    for (int i = 0; i < 3; ++i)
    {
        std::cout << "The index is " << index[i] << ".  The data at this index is  ["
                  << timeTable[index[i]][0] << " " << timeTable[index[i]][1] << "]\n";
    }

    return 0;
}

Exemple en direct

En utilisant des indices au lieu de manipuler le tableau d'origine, vous pouvez trier des structures de données complexes plus efficacement et plus facilement.

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