Quelqu'un pourrait-il nous conseiller lors de l'implémentation de quelque chose comme IComparable dans .NET quel algorithme de tri utilise .NET pour trier réellement les données sous-jacentes? L'algorithme utilisé est-il également personnalisable ou sélectionnable?Quel algorithme de tri est implémenté par le framework .NET
Répondre
Il y a deux biggies.
Array.Sort
(qui trie un tableau en place) utilise un unstableQuicksort.
Ceci est la même mise en œuvre utilisée en interne par List<T>.Sort
, conformément à la documentation MSDN:
Cette méthode utilise
Array.Sort
, qui utilise l'algorithme QuickSort.
Le procédé Enumerable.OrderBy<TSource, TKey>
(qui trie un exemplaire d'une séquence d'entrée) utilise un Quicksort stable . Pour autant que je sache, ce sont les deux seules implémentations de tri dans le .NET BCL.
Le MSDN Documentation indique que l'algorithme de tri utilisé est Quicksort (au moins pour les tableaux) - Cette option n'est pas sélectionnable ou personnalisable. Notez que ce n'est pas l'interface IComparable
qui spécifie la méthode de tri à utiliser, c'est-à-dire la méthode ou la classe qui effectue le tri (normalement un tableau ou une liste, mais il peut s'agir de n'importe quelle méthode).
Cela signifie que si vous le souhaitez, vous pouvez implémenter votre propre méthode de tri en utilisant un algorithme alternatif.
- 1. Avec quel framework GUI est le Mono .NET Windows.Forms implémenté?
- 2. Question curieuse: quel algorithme est implémenté par STL set_intersect?
- 3. Quel algorithme de tri est utilisé par LINQ "OrderBy"?
- 4. Quel algorithme de tri est-ce?
- 5. Quel algorithme de tri est-ce?
- 6. Quel algorithme est implémenté dans la détection de contour OpenCV?
- 7. Quel est le modèle de conception implémenté par PEAR DB_DataObject?
- 8. Un bon algorithme de tri parallèle implémenté avec CUDA?
- 9. Rails Tri par algorithme
- 10. Quel algorithme utilise cette méthode de tri?
- 11. Quel algorithme de triangulation est utilisé par Opengl?
- 12. Quel est le nom d'un algorithme implémenté dans gamma_curve de dcraw?
- 13. Le tri par sélection est-il un algorithme efficace?
- 14. Quel algorithme de tri est utilisé par STL :: list :: sort() de Microsoft?
- 15. quel algorithme est le plus sécurisé?
- 16. Comment est implémenté le tri/recherche `@ geodist` dans Sphinx?
- 17. Comment le framework Moles Isolation est-il implémenté?
- 18. L'algorithme de tri utilisé par la méthode `. Array.Sort()` de .NET est-il un algorithme stable?
- 19. Ai-je implémenté ce tri par insertion correctement?
- 20. pseudo-algorithme d'algorithme de tri par insertion
- 21. Quel algorithme de tri à critères multiples utiliser?
- 22. Quel algorithme utilise arsort?
- 23. Quel est le niveau de cryptage TLS pris en charge par .NET Compact Framework 3.5
- 24. quel framework .NET est exécuté par le serveur de développement VS?
- 25. Quel est le meilleur algorithme de tri de test pour un LinkedList doublement
- 26. Quel est le problème avec cet algorithme de tri de fusion? Coincé depuis l'heure précédente
- 27. Quel algorithme utilise la méthode de tri de Ruby?
- 28. Quel algorithme Blowfish est le plus 'correct'?
- 29. Quel algorithme de tri se trouve derrière un NSSortDescriptor?
- 30. Quel est le problème avec cet algorithme?
http://stackoverflow.com/questions/204805/quand-sorting-algorithm-is-used-by-net-in-icomparer ou http://stackoverflow.com/questions/1854604/which-sorting-algorithm -used-in-net-arrays-tri-method-array-sort Je suis surpris que la boîte de dialogue 'nouvelle question' ne vous ait pas montré des questions similaires lorsque vous avez entré celui-ci. Je ne suis pas surpris que quelqu'un n'ait pas cherché avant de demander. –
[Cela a changé] (https://msdn.microsoft.com/fr-fr/library/6tf1f0bc (v = vs.100) .aspx) depuis .NET 4.5: maintenant le type d'insertion pour n <16, sinon commence par Quicksort et passe à Heapsort lorsque le nombre de partitions (profondeur de récursion?) Dépasse 2 * Log^N. Appelé: [Introsort] (https://en.wikipedia.org/wiki/Introsort) – Laoujin