只是想知道为什么,Java
并且.NET Framework
默认情况下使用不同的排序算法。
在Java中 ,默认情况下Array.Sort()
使用合并排序算法,如Wikipedia.com所述:
在Java中,Arrays.sort()方法根据数据类型使用合并排序或调整后的快速排序,当排序少于七个数组元素时,为了实现转换为插入排序的实现效率
在.NET Framework中, Array.Sort/List.Sort()
使用“ 快速排序”作为默认排序算法(MSDN):
List.Sort()使用Array.Sort,后者使用QuickSort算法。此实现执行不稳定的排序;也就是说,如果两个元素相等,则可能不会保留其顺序。相反,稳定排序保留了元素相等的顺序。
通过查看出色的“算法比较”表,我们可以发现两种算法在最坏情况和内存使用情况方面的行为都大不相同:
这两个Java
和.NET
是企业解决方案发展的巨大框架,既有嵌入式开发平台。那么为什么他们默认使用不同的排序算法,有什么想法呢?