快速排序中三个(平均值)的中位数?

Median of three (mean) in quicksort?

尽管阅读了这篇文章,但我似乎无法理解它是如何工作的 - median of three values strategy

我知道在快速排序中,我可以选择一个任意值作为我的基准并从那里开始。对于三个快速排序的中位数,一些在线文章说在未排序的数组中选择第一个、最后一个和中间的值,然后选择作为这 3 个值的中心的值(例如 56、12、45 -45 将是采摘)。该示例还显示了 9 个值,可以轻松选择第一个、最后一个和中间值。

如果未排序的数组只有 8 个值,如 34, 66, 57, 45, 20, 98, 92, 41 怎么办?鉴于第一个、最后一个和中间的值分别是 34, 45, 41,我的中值会是 45 吗?

谢谢。

Is my median value going to be 45 given that the first, last and middle values are 34, 45, 41 respectively?

它将是 41,因为这是这三个数字的中位数。

一般来说,方法就是按照某种scheme选取三个数,取中位数作为当前的pivot。

如果选择第一个、中间和最后一个的中位数,则需要考虑一些技术细节,例如大小均匀的数组(如您的示例)、大小小于三的数组等。您可以做出任何合理的选择做了就好了