Quicksort在每个分区中交换中间和第一个元素

时间:2017-09-12 01:47:53

标签: quicksort

假设我们有一个标准的双向分区QuickSort算法,它总是在第一个元素上转动。但是,在QuickSort的这个轻微变体中,我们首先交换第一个和中间元素,然后转向“新”和“#39;第一要素。我的问题是,这会改变最坏情况下的运行时间吗?

我最初的想法是否定的,因为在每个子数组中元素仍然是相对于彼此的随机顺序,因此切换第一个和中间元素不会改变整个运行时。但是,由于我有兴趣找到最糟糕的情况,我不确定是否有一些特殊的'导致这种轻微变体的数组可以改变原始算法的最坏情况运行时间。

1 个答案:

答案 0 :(得分:1)

Quicksort最糟糕的情况是枢轴始终是最小值或最大值。考虑到这一点,您可以构建一个最坏情况的数组:

  • [1,2](双元素数组中的每个元素都是最小值或最大值)
  • [3,1,2]交换后产生上述
  • [1,3,2] pre-swap
  • [4,1,3,2]交换后产生上述
  • [1,4,3,2] pre-swap
  • [5,1,4,3,2]交换后产生上述
  • [4,1,5,3,2] pre-swap
  • [6,4,1,5,3,2]交换后产生上述
  • [1,4,6,5,3,2]交换前
相关问题