代码之家  ›  专栏  ›  技术社区  ›  ABlueCrayon

快速排序,在每个分区中交换中间和第一个元素

  •  1
  • ABlueCrayon  · 技术社区  · 7 年前

    假设我们有一个标准的双向分区快速排序算法,该算法始终以第一个元素为中心。然而,在这个小小的快速排序变体中,我们首先交换第一个和中间元素,然后以“新的”第一个元素为中心。我的问题是,这会改变最坏情况下的运行时间吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ry- Vincenzo Alcamo    7 年前

    Quicksorts最坏的情况是轴始终为最小值或最大值。记住这一点,您可以构建最坏情况下的阵列:

    • [1,2](两元素数组中的每个元素都是最小值或最大值)
    • [1、3、2]掉期前
    • [4,1,3,2]掉期后产生上述
    • [5,1,4,3,2]掉期后产生上述
    • [4、1、5、3、2]掉期前
    • [1、4、6、5、3、2]掉期前