如果选择最大元素作为枢轴,Quicksort是否始终具有二次运行时间?


9

如果您有快速排序算法,并且始终选择最小(或最大)元素作为枢轴;我是否假设如果您提供一个已经排序的数据集,无论您的“已排序”列表是按升序还是降序,都将始终获得最差的性能?

我的想法是,如果您始终为枢轴选择最小的元素,那么“已排序”输入是按升序还是降序排序并不重要,因为选择相对于枢轴进行排序的子集始终是一样大小?


2
您的想法是正确的,但在这种情况下,您也可以直接争论并计算快速排序的运行时间-您将获得。O(n2)
Yuval Filmus 2012年

Answers:


15

快速排序的最坏情况复杂度是。这是通过选择枢轴来实现的,该枢轴将集合划分为一个组只有一个成员。对于错误的数据透视选择算法,可以通过选择已排序集合的一端来轻松实现。您的假设是正确的。Θ(n2)


2
最好将其编写为:“ ...这是通过选择将集合进行划分的枢轴来实现的,以便一个组仅具有O(1)成员”

@Saeed Amiri:是的,但最好是精确的。
MMS

1
@SaeedAmiri:O(1)表示它与1成正比,这意味着它可以是k * 1。实际的最坏情况是恰好在1时达到的。我将向您保证O(1)仍可能导致O(n ^ 2)。
walrii 2012年

@MMS,我确切地写了,walrii您写道:“快速排序的最坏情况是 ..”,但实际上,这是实现的唯一方法不是您所说的方式,是的您描述的方式在所有情况下都是最坏的情况,但不是唯一的。Θ n 2Θ n 2Θ n 2O(1)Θ(n2)Θ(n2)Θ(n2)

5

是! 您的想法绝对正确!正如Yuval Filmus正确提到的,运行时间将为 Θ(n2)


3

01(n1)O(n2)

t(n)=t(n1)+t(0)+O(n)=O(n2)
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.