(快速)排序时,分区而不是进行枢轴转换有很大的好处吗?

时间:2018-10-17 12:46:29

标签: optimization quicksort idiomatic

在Quick-Sort算法的每个阶段中,都会选择一个枢轴,然后将数据分为该枢轴以下和之上的元素(以及一些与之相等的打破平局)的元素。

现在,每次透视都需要对数据进行传递。同样,枢轴的相对位置周围的变化是中值元素也很大。取而代之的是,可以想象得到一个k个元素的样本,即,并使用样本元素作为不同部分的边界,将数据划分为k + 1个部分。尽管某些部分可能太小或太大,但大多数都应该很好。其余的则需要进行一些校正(例如通过计数),但这应该是可行的。

我还没有尝试过在(二进制)Quick-Sort中使用这种方法,但是想知道这种方法是否真的在实践中使用,并且这样做是否真的有好处。

PS-如果您可以说出并行化的适用性(使用CPU上的AVX-512,Xeon Phi和GPU等),那将特别有帮助。

0 个答案:

没有答案