【发布时间】:2015-08-04 09:14:11
【问题描述】:
在 Java 中,堆排序似乎是最好的排序算法,同时根据 http://www.sorting-algorithms.com/ 对随机数数组进行排序 但是我仍然读到堆排序不稳定,为什么会这样?在对数组或随机数进行排序时,应将哪种排序算法视为最佳算法?
【问题讨论】:
-
你知道排序算法中的“稳定”是什么意思吗?
-
我不明白你是如何得出堆排序是最好的结论的。众所周知,它的性能不如 QuickSort,因为它对缓存不友好(排序时它会跳过整个数组)。 BTW QuickSort 是另一种不稳定的排序算法,这就是为什么它只用于对Java中的原始数组进行排序。
-
我们不能说任何算法都适合所有目的。这取决于操作。
-
没有“最佳”之类的东西。对于不同的场景,有更好和更差的。例如,快速排序通常比大多数都好,但是当我需要对磁盘上的数据进行排序时,我不想使用它。还有非比较类型,它们的速度可能非常快,但它们的适用性有限。
-
所以你的问题的神秘意义是'“稳定”在排序中意味着什么',最好的答案是查找它。
标签: java arrays algorithm sorting data-structures