【问题标题】:normal vs randomized quicksort on an array which is 1/3 sorted对 1/3 排序的数组进行正常与随机快速排序
【发布时间】:2021-03-15 15:33:50
【问题描述】:

我正在尝试计算在具有以下属性的数组上应用快速排序(随机或正常)的时间复杂度:
数组在前 2/3 中未排序,最大元素是 t
接下来的1/3是排序的,这里所有的元素都大于t\

我知道在正常的快速排序中,选择这两个部分之间的障碍导致不必对下一个 1/3 进行排序,但我找不到一种正式的(数学)方法来计算时间复杂度的渐近界。
提前致谢

【问题讨论】:

    标签: sorting big-o complexity-theory quicksort randomized-algorithm


    【解决方案1】:

    随机快速排序相当于先对数组进行洗牌,然后再应用简单快速排序。洗牌需要线性时间,因此无论部分排序的输入如何,您都可以获得快速排序的平均时间复杂度,即 O(n log n)。

    朴素的快速排序将在这些输入上具有二次时间复杂度,因为最终元素 t 将被选为枢轴,并且 t 出现在排序区域之前,因此该区域将被选为整个分区。朴素的快速排序将在此分区上花费 (n/3) 的二次时间,这是 n 的二次时间。

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 2013-11-22
      • 2013-01-29
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多