
Envoyé par
Jayme65
Non, c'est bien le premier que je veux trouver
Comment est ce que cela se traduirait en code, stp? Car "représenter ta liste sous forme d'un arbre" ne me parle pas ;-)
Bonjour.
Voici un exemple naïf (simple) pour une structure de données contenant les mots "bol", "bou" et "boule". On utilise en général '\0' comme marqueur de fin de chaîne mais je l'ai remplacé par '@' par souci de clarté.
@
/
E
/
L
/
U
/ \
B - O @
\
L
\
@
Personnellement, pour quelques dizaines de milliers d'éléments, je resterais tout de même sur une approche dichotomique pour trouver n'importe quel élément commençant pas "bo" puis je reviendrais en arrière avc un scan linéaire pour trouver le premier. Plus simple à écrire, moins gourmand en mémoire. Et sans doute plus rapide aussi, question de localité des références.
Cela dit, n'est-ce pas de l'optimisation prématurée ? Un traitement de 50ms est instantané aux yeux de l'utilisateur. Pour 50k éléments cela laisse 1000 ns par élément ! A raison de 1ns par opération basique, 5ns par appel de fonction virtuelle et 10ns par défaut de cache L1, on a de la marge ! Un bête scan linéaire pourrait donc suffire.
PS : Aujourd'hui, avec cet autre post, c'est officiellement ma journée dessin. Très récréatif ce vendredi.
Partager