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:
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.