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

Comment trier un tableau de tableaux par le premier élément en C ?

Barbara Streisand
Libérer: 2024-11-21 19:05:13
original
953 Les gens l'ont consulté

How to Sort an Array of Arrays by the First Element in C  ?

Comment trier un tableau de tableaux par le premier élément ?

Vous disposez d'un tableau de tableaux, tel que [[4, 204 ], [10, 39], [1 500]]. Vous souhaitez les trier selon le premier élément du sous-tableau pour obtenir [[1, 500], [4, 204], [10, 39]]. Voici comment procéder en C :

Approche : trier les indices au lieu des tableaux

Plutôt que de trier le tableau lui-même, vous pouvez trier un tableau d'indices qui pointent vers le tableau d'origine. Cette approche est plus efficace pour les grands tableaux où chaque sous-tableau contient une quantité importante de données ou lorsque l'ordre d'origine doit être préservé.

Étape 1 : Créer un tableau d'index

Initialisez un tableau d'indices nommé index, où les indices vont de 0 à n-1, où n est le nombre de sous-tableaux.

Étape 2 : Définir un prédicat de tri

Créez un prédicat de tri qui compare les premiers éléments des sous-tableaux à l'aide du tableau d'index. Le prédicat doit renvoyer vrai si le premier élément du sous-tableau à l'index n1 est inférieur à celui à l'index n2.

bool compareFirstElement(int n1, int n2) {
  return timeTable[n1][0] < timeTable[n2][0];
}
Copier après la connexion

Étape 3 : Trier le tableau d'index

Triez le tableau d'index à l'aide de la fonction std::sort et du prédicat défini. Cela réorganisera les indices dans l'ordre croissant en fonction des premiers éléments des sous-tableaux.

std::sort(index, index + 3, compareFirstElement);
Copier après la connexion

Étape 4 : Utiliser des indices triés pour accéder aux données

Pour accédez aux données triées, utilisez le tableau d'index trié pour pointer vers les sous-tableaux dans le timeTable array.

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

Exemple en direct :

[Exemple en direct](https://wandbox.org/permlink/sXTyuT2fubLi4j7i)

Remarque : Cette approche peut également être appliquée pour trier des tableaux d'objets ou des structures contenant des éléments triables données.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal