随机快速排序的优点是什么?


18

在他们的著作随机化算法 Motwani和拉加打开与他们的RandQS功能的说明引入-随机快速排序-其中所述枢轴,用于将所述组分成两个部分,是随机选择。

一段时间以来,我一直在绞尽脑汁(虽然动力不足),但是我无法看到该算法比每次简单地选择中间元素(索引而不是大小)有什么优势。

我想我看不到这是什么:如果初始集合是按随机顺序排列的,那么在集合中随机位置拾取元素和在固定位置拾取元素之间有什么区别?

有人可以简单地启发我吗?

Answers:


19

如果输入数组是随机均匀分布的(如您所指出的),则始终选择固定位置的元素(例如,您建议的中间位置)与随机选择的元素之间没有区别。

但是,如果您的输入数组不是真正按随机顺序排列(几乎在所有实际情况下都是这种情况),则需要“预偏移”数组以便将其中的元素按随机顺序放置,或(等价地)始终以随机元素为支点。这样可以确保快速排序的分区阶段将数组划分为大小几乎相等的子数组,从而确保预期的运行时间保持为Øñ日志ñ

因此,您的困惑似乎来自以下事实:您以某种方式假设排序算法可以(实际上)期望输入数组始终是随机分布的。


7
Øñ日志ñØñ2

ñ1个ñ

@ RobertS.Barnes是
Jernej

4

正如Jernej指出的那样,输入的所有排列均具有同等可能性的假设在现实中并不总是成立。第一个想法可能是置换输入数组。这会起作用,但是更容易分析随机选择枢轴的情况。这也称为随机采样

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.