51 votes

Quel algorithme de tri est utilisé par LINQ "OrderBy"?

De toute évidence LINQ "OrderBy" avait à l'origine été spécifié comme instable, mais le temps de Orca il a été spécifié comme stable. Pas l'ensemble de la documentation a été mise à jour en conséquence - tenir compte de ces liens:

Mais si LINQ OrderBy est maintenant "stable", alors cela signifie qu'il n'est pas à l'aide d'un quicksort (ce qui est par nature instable), même si certains documents (par exemple, Troy livre) dit qu'il est. Donc ma question est: si pas de quicksort, alors qu'est-ce que l'algorithme réel LINQ orderBy est l'aide?

54voto

Jb Evain Points 11368

Pour LINQ to Objects, c'est un tri rapide stable qui est utilisé. Pour tout autre type de LINQ, cela dépend de l'implémentation sous-jacente.

39voto

LorenVS Points 5784

Démarrez le réflecteur, ouvert à System.Linq.EnumerableSorter révèle que Linq2Objects utilise le tri rapide

3voto

John Weldon Points 19132

Je comprends que OrderBy est traduit en SQL qui effectue le tri sur la base de données. Au moins dans le cas de LINQ to SQL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X