Trier une liste selon un critère donné

Problème

Vous voulez implémenter un algorithme permettant de trier une liste de données codées d’une manière particulière, avec un critère de tri particulier.

Solution

Renseignez-vous pour savoir si une fonction de tri n’est pas associée à la structure de données. Un tableau dynamique et un tableau de pointeurs peuvent être triés à l’aide de la fonction qsort(). Les structures suivantes de glib peuvent aussi être triées.

Fonctions de tri des structures de données de glib

Structure de données

Fonction

GArray

g_array_sort()

GPtrArray

g_ptr_array_sort()

GTree

Trié par construction

GHashTable

Pas de fonction de tri spécifique

Discussion

Les arguments des fonctions de tri consistent en général en la structure de données à trier (sur un argument ou plus) et en un pointeur sur une fonction de comparaison. La fonction de comparaison prend deux arguments qui sont du même type que celui d’un élément de la liste de données à trier. La valeur de retour est 0 s’il y a égalité entre ces deux arguments, négative si le premier est inférieur au second, et positive si le premier est supérieur au second. Pour les chaînes de caractères, la fonction strcmp() convient.

Lorsqu’il s’agit de trier un tableau de structures, la fonction qsort() effectue...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Optimiser la recherche d'une aiguille dans une botte de foin
Suivant
Supprimer les doublons dans une structure de données