分区步骤如何作为快速排序中的征服步骤?

时间:2015-12-09 19:15:44

标签: algorithm time-complexity theory

递归关系的时间复杂度由下式给出: T(n) = aT(n/b) + f(n)这里f(n)是征服子问题的成本,即合并成本 所有的子问题都是为了解决这个问题,但是在分配的情况下我们将数组划分到一个特定的枢轴点,所以在计算快速排序的时间复杂度时,我们为什么要采用O(n) f(n)的时间。

这如何作为征服步骤?

1 个答案:

答案 0 :(得分:1)

通过征服步骤不明白你的意思。

f(n)实际上是在递归函数中完成的任何事情的成本,这种情况发生在递归之前,之后或之间。

在快速排序的情况下,合并分区解决方案的成本为0,因为在对枢轴的左侧和右侧进行排序后您不需要执行任何操作。整个成本是生成分区,为此,您需要定位所选的枢轴。这就是为什么快速排序被归类为硬分裂易加入的分而治之的原因。

定位枢轴的成本为O(n),因为您必须从左向右和从右向左移动,在枢轴的错误一侧找到项目,并交换它们,直到两次搜索(从从左到右,从右到左)相互交叉。

希望这对你的理解有所帮助,如果我完全误解了你的问题,那就很抱歉。