C'est ton "ça ne passe plus" qui m'a induit en erreur, si tu voulais juste indiquer qu'on aurait une légère réduction de performance (tout dépend de la fonction de hachage, mais ça ce n'est pas notre problème, c'est celui du programmeur qui doit l'implémenter si il utilise des types non-standard), tu aurais pu employer une expression plus modérée.Citation:
Envoyé par PRomu@ld
Certes il est probable que cette solution soit plus lente que ta solution de tableau, c'est le coût de la généricité ! Mais de toute façon depuis un certain temps on est plutôt dans l'abstrait, il est peu probable que le posteur originel utilise jamais cet algorithme pour générer des permutations pour un n élevé (et avec une complexité en O(n!), la croissance est exponentielle et totalement monstrueuse, donc les n raisonnables sont vraiment peu nombreux). Pour être tout à fait honnête, après benchmark la solution avec une LinkedList reste presque à égalité avec la solution LinkedHashSet avec n = 10 (3 628 800 permutations tout de même... et dans les 4 000 000 d'appels à apn(), 3 min sur mon PC (4 secondes en désactivant la sortie)), donc bon...
Si on a réellement besoin de tels n, il est sans doute bien plus raisonnable de faire cela en C, et avec une implémentation spécifique aux données qu'on va manipuler (ou éventuellement avec un générateur de fonction de hachage parfaite puisqu'ici on connaît l'ensemble des données possibles).
--
Jedaï