我是物理学家,请原谅我的无知:(
枢轴必须是数组元素吗?如果是这样,为什么?选择数组元素作为数据元素是否具有相当大的优势?
我问这个是因为选择数组元素的平均值似乎相当稳健(避免子数组为1和N-1长的情况等)。平均值可能不是数组元素(例如:它可能是整数数组的浮点数)
谢谢!
答案 0 :(得分:0)
您可以非常轻松地实现一个版本的快速排序,它不需要将数据透视图作为数组的实际元素。通过一些简单的修改,该算法可以正常工作。但是你必须自己编写代码:标准的快速排序需要将数据透视转换为数组的元素。
但是,我不确定那会带来什么好处。首先,平均值不能保证是一个好的支点。此外,由于这需要遍历整个数组,并且这也会在递归调用期间发生,它可能会使算法速度变慢,从而克服优越的数据透视选择的任何优势。获得良好支点的一个很好的策略是选择一个小的随机样本(比如说10个元素),然后选择这个样本的中位数。