随机快速排序,分区后再次选择枢轴

时间:2020-04-10 16:21:40

标签: algorithm sorting recursion time-complexity quicksort

对于这个给定的问题,我想再次提出:

考虑一种随机快速排序算法的变体,其中随机选择枢轴,直到以较低的子数组L和较大的子数组G都对数组进行分区为止 包含数组元素的3/4。例如,如果随机选择的枢轴 对数组进行分区,以使L包含1/10的元素,然后再包含另一个 枢轴是随机选择的。分析该算法的预期运行时间。

起初,我把这个问题当作只是一个常规的快速排序问题,然后在以下地方再次出现:

[\s.]*

如果我们有一个算法总是将拆分始终为1/4:3/4,那将是有意义的。但是我们在这里使用随机旋转,每当不满足分配条件时旋转旋转。我知道随机快速排序的最坏情况运行时间仍为O(n ^ 2),但我认为在这种情况下,最坏情况现在有所不同(比O(n ^ 2)还差)。到目前为止,我走在正确的轨道上吗?

2 个答案:

答案 0 :(得分:1)

快速排序的时间复杂度永远不会超过O(n^2),除非您选择了一些花费O(n)时间来选择枢轴的逻辑。

选择枢轴的最佳方法是随机元素或末端或第一个元素。

答案 1 :(得分:0)

n/2个错误的数据透视。假设您从未两次选择同一数据透视表(如果这样做,最坏的情况总是选择一个错误的数据透视表,即无限的时间),在最坏的情况下,您会重复分区n/2次,这导致{{ 1}}分区阶段的复杂性。复发变为

Θ(n^2)