为快速排序选择枢轴的更好方法是什么?

问题描述 投票:0回答:1

有人告诉我,有一个Quicksort的优化枢轴列表,但是我在网上搜索,但没有找到。因此,此列表包含很多素数,但也包含许多其他素数(如今,我们无法解释为什么此枢轴是最好的)。然后,如果您知道这件事或有一些文档,我很感兴趣。如果您知道优化快速排序的另一种方法,我也很感兴趣。在此先感谢

pivot quicksort
1个回答
0
投票

使用数字列表的一种排序方式是短壳,其中数字用于“空白”:

https://en.wikipedia.org/wiki/Shellsort#Gap_sequences

对于快速排序,使用3的中位数会有所帮助,使用9的中位数会有所帮助,并且中位数可以保证最坏情况下O(n log(n))的时间复杂度,但是涉及一个很大的常数因子,在大多数情况下,结果会以较慢的整体快速排序。

https://en.wikipedia.org/wiki/Median_of_medians

具有合理的支点选择的Introsort(随机数,中位数为3、9,...),如果递归级别变得太深,则切换到堆排序是一个常见的选择。

https://en.wikipedia.org/wiki/Introsort

© www.soinside.com 2019 - 2024. All rights reserved.