【问题标题】:Quicksort with swapping middle and first element in each partition在每个分区中交换中间元素和第一个元素的快速排序
【发布时间】:2017-09-12 01:47:53
【问题描述】:

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

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

【问题讨论】:

    标签: quicksort


    【解决方案1】:

    快速排序最坏的情况是当主元总是最小值或最大值时。考虑到这一点,您可以构建一个最坏情况的数组:

    • [1, 2](二元数组中的每个元素都是最小值或最大值)
    • [3, 1, 2] 交换后产生上述结果
    • [1, 3, 2] 预交换
    • [4, 1, 3, 2] 交换后产生上述结果
    • [1, 4, 3, 2] 预交换
    • [5, 1, 4, 3, 2] 交换后产生上述结果
    • [4, 1, 5, 3, 2] 预交换
    • [6, 4, 1, 5, 3, 2] 交换后产生上述结果
    • [1, 4, 6, 5, 3, 2] 预交换

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 2011-10-08
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      相关资源
      最近更新 更多