9 votes

Java et .NET : Pourquoi différents algorithmes de tri sont-ils utilisés par défaut?

Je me demande pourquoi Java et .NET Framework utilisent des algorithmes de tri différents par défaut.

En Java Array.Sort() utilise l'algorithme Tri Fusion par défaut et comme le dit Wikipedia.com:

En Java, les méthodes Arrays.sort() utilisent le tri fusion ou un tri rapide optimisé en fonction des types de données et passent à un tri par insertion lorsqu'il y a moins de sept éléments d'array à trier pour des raisons d'efficacité d'implémentation

Dans .NET Framework Array.Sort/List.Sort() utilise Tri Rapide comme algorithme de tri par défaut (MSDN):

List.Sort() utilise Array.Sort, qui utilise l'algorithme QuickSort. Cette implémentation réalise un tri instable; c'est-à-dire que si deux éléments sont égaux, leur ordre peut ne pas être préservé. En revanche, un tri stable préserve l'ordre des éléments qui sont égaux.

En regardant le superbe tableau de "Comparaison des algorithmes" on peut voir que ces deux algorithmes ont des comportements assez différents en terme de Pire Cas et Utilisation de la Mémoire:

Description de l'image ici

Java et .NET sont tous deux d'excellents Frameworks pour le développement de Solutions Entreprise, tous deux possèdent des plateformes pour le développement embarqué. Alors pourquoi utilisent-ils des algorithmes de tri différents par défaut, des idées ?

ÉDIT: Je vois que deux personnes ont déjà voté pour fermer cette question comme non constructive. Je crois que Java et .NET sont les Frameworks de développement les plus populaires, donc il serait vraiment intéressant de trouver des réflexions non triviales et intéressantes, peut-être des faits!, concernant une telle décision.

4voto

Oded Points 271275

Différentes équipes de développement dans deux entreprises différentes sont parvenues à des conclusions différentes concernant les cas d'utilisation habituels de leurs frameworks et composants et ont décidé de les implémenter en conséquence.

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