使用3中位数方法进行快速排序的最坏情况

时间:2018-10-20 05:12:57

标签: algorithm sorting time time-complexity quicksort

我们能否始终避免使用3中位数方法进行快速排序的最坏情况?

1 个答案:

答案 0 :(得分:-1)

快速排序算法的工作原理如下:

  1. 如果S中的元素数为0或1,则返回(基本情况)。
  2. 选择S中的任何元素v(称为枢轴)。
  3. 将v以外的S中的元素划分为两个不相交的组
  4. 返回{QuickSort(S1)+ v + QuickSort(S2)}

使用3中位数方法进行快速排序的最坏情况是,所选的枢轴将问题大小减小到最小程度。这意味着所选的枢轴将提供尽可能远的分区。而且由于我们使用的是3位数法,所以所选分区不能是最大元素或最小元素,因为我们选择的方法可确保该分区具有比中位数更大和更小的元素。

因此,如果您的意思是可以避免发生真正O(n ^ 2)场景的最坏情况,即每个元素都按值向后排序,并且必须对整个列表进行分区,那么是的,我们可以避免出现最坏的情况

使用3位中值方法的目的是使我们更接近快速排序的平均运行时间:O(nlogn)。这是因为通过避免使用列表中最远的元素来选择分区,我们可以使与最佳(平均)运行时间O(nlogn)的偏差最小。

使用中位数为3的方法将使我们不必在整个列表中搜索正确的分区,而只需从中间位置开始。因此,我们可以避免最坏情况下的O(n ^ 2)运行时间,并稳定在O(nlogn)的平均运行时间上。