Warm tip: This article is reproduced from serverfault.com, please click

sorting-在1/3排序的数组上的常规vs随机快速排序

(sorting - normal vs randomized quicksort on an array which is 1/3 sorted)

发布于 2020-12-03 15:32:33

我正在尝试计算在具有以下属性
的数组上应用快速排序(随机或普通)的时间复杂度:数组在前2/3中未排序,最大元素为t
,下一个1/3排序,所有这里的元素大于t \

我了解在正常的快速排序中,在这两个部分之间选择障碍将不必对下一个1/3进行排序,但是我无法找到一种形式上的(数学上的)方法来计算时间复杂度的渐近边界。
提前致谢

Questioner
d.sadeghi
Viewed
0
kaya3 2020-12-03 23:49:12

随机快速排序等效于先对数组进行混洗,然后再应用幼稚的快速排序。改组需要线性时间,因此它可以使快速排序获得平均时间复杂度,而与部分排序的输入无关,即O(n log n)。

幼稚的快速排序将在这些输入上具有二次时间复杂度,因为最终元素t将被选择为枢轴,并且t出现在排序区域之前,因此该区域将被整体选择为分区。在此分区上,朴素的快速排序将在(n / 3)中花费二次时间,在n中是二次时间。