Trier une liste chaînée de caractères
Bonjour a tous,
J'ai besoin dans un programme en C de trier une liste chaînée de caractère dans l'ordre alphabétique
(Trier une liste de mot pour les mettre comme dans un dictionnaire)
Et j'ais pas vraiment d'idée de comment faire sa...
Voila donc si quelqu'un a une idée d'une méthode simple et rapide merci ! ;)
Une liste chainee de caractères est une catastrophe
* Une liste chainée de caractères est une catastrophe en terme d'espace mémoire utilisé.
Pour 1 caractère de "charge utile" dans un élément de liste il faut
- 1 octet pour le caractère
- 8 octets pour le pointeur sur l'élément (si on est en 64 bits)
- 7 octets de "padding" pour la structure
- 8 ou 16 octets supplémentaires pour les besoins de de l'allocation dynamique.
Soit un gaspillage de l'ordre de 95 %, record d'incompétence qui sera difficile à battre.
* un tri de liste basé sur les plus mauvais algorithmes sur les tableaux (insertion, bulles, sélection) sera encore très mauvais si on le transpose sur les chaines.
Pourtant, il est facile de faire des tris en n.log n sur les listes chainées. La méthode où l'on coupe les données en 2 pour les trier (récursivement) et fusionner ensuite est plus facile à réaliser sur les listes que sur les tableaux, parce qu'on n'a pas la problématique de "fusion sur place".