mig*_*ash 1 java sorting binary mergesort quicksort
在Quicksort,MergeSort和Binary Insertion Sort中,是否有任何一种情况可以使用其中任何一种?
我知道像Quicksort这样的东西在几乎排序的列表上会出现问题(但我相信枢轴的随机分配可以消除最坏的情况时间),所以使用MergeSort可能更好.MergeSort可能比QuickSort使用更多的空间,我不完全确定并且对于LinkedLists来说Merge可能更好.
而且我猜二进制插入排序对于较小的列表更好?如果是这样,是否有使用此阈值或者只是解释的大小?比如,如果列表大小为3,我们应该使用二进制插入排序比Quick还是Merge?
我假设这是关于如何在Java中对东西进行排序的实用建议.
我的建议是,通常最好使用Arrays.sort(...)并依赖标准实现的启发式来决定使用哪种排序算法.如果出现以下情况,您只需要担心:
(在我的回答中隐含的是,您知道所有关于不同排序算法的特征,如任何优秀的数据结构教科书中所述.IMO,每个程序员都应该知道这些东西.)