快速排序变化的比较次数

时间:2016-06-26 17:22:14

标签: algorithm quicksort

当我们将最后一个元素作为快速排序中的枢轴元素并且我们将第一个元素作为快速排序中的枢轴元素时,比较的数量会不同吗?

2 个答案:

答案 0 :(得分:1)

不,不会。在快速排序中,我们选择了一个枢轴元素(比如x)。然后将列表分成大于x且小于x的2个部分。

因此,比较次数的变化与递归深度成正比。也就是说,递归函数越深,将列表分成2部分的比较次数就越多。

递归深度不同 - 更多x的值可以将列表划分为相似的长度部分,递归深度更小。

因此,结论是,无论您选择第一个元素还是最后一个元素作为数据透视表,无论该值是否可以将列表分成两个相似的长度列表。

修改 枢轴接近中位数越多,复杂性就越小(O(nlogn))。枢轴越接近列表的最大值或最小值,复杂性就越高(达到O(n ^ 2))

答案 1 :(得分:0)

当选择第一个元素或最后一个元素作为数据透视表时,比较数量保持不变,但最糟糕的情况是数组被排序或反向排序。 在每个步骤中,数字按以下重复进行划分。

T(n) = T(n-1) + O(n) and if you solve this relation it will give you the complexity of theta(n^2)

当您选择中间元素作为枢轴时,它会给出

的递归关系
T(n) = 2T(n/2) + \theta(n) which is the best case as it gives complexity of `nlogn`