该算法的递归关系是什么?

时间:2019-03-31 19:47:50

标签: algorithm sorting partitioning median

我被赋予了这种算法,该算法可以计算数组的中位数并对周围的其他项进行分区。

它把所有小于集合A1中值的元素,所有等于A2的元素和所有大于A3的元素。如果A1大于1,它将递归进入其中,并且A3也会发生同样的情况。复制A中的A1,A2和A3串联后终止。

我知道它与Quickselect非常相似,但我不知道如何进行操作以找出最坏情况下的时间复杂度。

我知道的是,在Quicksort中,时间复杂度为T(n)= n -1 + T(a)+ T(n -a-1),其中n-1用于分区T(a)是在第一部分上的递归调用,而t(na-1)是在最后一部分上的递归调用。在那种情况下,最糟糕的情况发生在枢轴始终是数组中最大或最小的项时。

但是现在,由于我们以中位数为中心,最坏的情况是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用5大算法,这将为您提供近似的中位数。如果您将其用作快速排序的枢纽,则最坏情况的复杂度将是O(n log n)而不是O(n ^ 2),因为我们每次均分,而不是当我们不等分时最坏的情况一个铲斗有一个元素,另一个铲斗有n-1个元素。

另一方面,这种最坏的情况极不可能发生。使用Big 5中值算法找到枢轴点会产生相当大的开销,因此在实践中,通过选择随机枢轴,它的性能要好于其他。但是,如果您想每次查找中位数,则最坏的情况是O(n logn)