为什么Merge sort用于AndroidJava API中的对象?

为什么Merge sort用于AndroidJava API中的对象?,第1张

概述在Java Arrays.sort()中,基本类型使用快速排序.另一方面,Arrays.sort()对象使用合并排序.同样适用于Collection.sort(),它也使用Merge排序.集合排序使用下面的Arrays排序实现.所以,简单来说,我可以说基元是使用快速排序排序的,但是对象是使用合并排序进行排序的.我的猜测是它与自己的排序算法有关.关于快速排序与

在Java Arrays.sort()中,基本类型使用快速排序.另一方面,Arrays.sort()对象使用合并排序.同样适用于Collection.sort(),它也使用Merge排序.集合排序使用下面的Arrays排序实现.所以,简单来说,我可以说基元是使用快速排序排序的,但是对象是使用合并排序进行排序的.

我的猜测是它与自己的排序算法有关.关于快速排序与合并排序的SO有很多讨论,比如this和this.似乎存在相互矛盾的声明哪个更好,这是可以理解的,因为这取决于数据集.

我的理解是

>到位:快速排序获胜.可以在链接列表的就地实现合并排序
>外部存储数据:合并排序获胜.
>排序列表(由任何形式的链表支持):合并排序获胜. Link

AndroID API似乎遵循与Java相同的模式.这就是我在Arrays.java中找到的

    public static voID sort(long[] array) {    DualPivotQuicksort.sort(array);}

还有这个,

public static voID sort(Object[] array) {    ComparableTimsort.sort(array);}

我不明白的是,是什么让Merge排序成为在Java或AndroID中排序对象的好选择?为什么不把这个决定留给开发者?最佳答案关键问题是排序稳定性 – 如果从排序顺序的角度看两个元素相等,它们是否以与输入中相同的顺序出现在结果中.

对于例如长.输入中的所有3个实例将组合在一起,没有人关心哪个是哪个.

另一方面,对象可能以不影响排序顺序的方式不同.如果您按腿数分类动物,您可能会关心“猫”和“狗”是否保持原始顺序.

Arrays.sort合并是稳定的.用于基元的快速排序不需要稳定. 总结

以上是内存溢出为你收集整理的为什么Merge sort用于Android / Java API中的对象?全部内容,希望文章能够帮你解决为什么Merge sort用于Android / Java API中的对象?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存