我想知道为什么Java
和.NET Framework
默认使用不同的排序算法。
在Java中,Array.Sort()
默认使用归并排序算法,正如Wikipedia.com所述:
在Java中,Arrays.sort()方法根据数据类型使用归并排序或经过调整的快速排序,并在实现效率时在要排序的元素少于七个的情况下切换到插入排序。
在.NET Framework中,Array.Sort/List.Sort()
使用快速排序作为默认排序算法(MSDN):
List.Sort()使用Array.Sort,它使用快速排序算法。这种实现执行不稳定排序;也就是说,如果两个元素相等,则它们的顺序可能无法保留。相比之下,稳定排序保留相等元素的顺序。
通过查看"算法比较"表格,我们可以看到两种算法在最坏情况和内存使用方面有着非常不同的行为:
Java
和.NET
都是用于企业解决方案开发的优秀框架,两者都有嵌入式开发的平台。那么为什么它们默认使用不同的排序算法呢?有什么想法吗?
编辑: 我看到已经有两个人投票将此问题关闭为“没有建设性”。我认为Java和.NET是最流行的开发框架,因此找到任何关于这样的决定的非平凡和有趣的想法,甚至是事实,都会非常有趣。