递归关系的时间复杂度由下式给出:
T(n) = aT(n/b) + f(n)
这里f(n)
是征服子问题的成本,即合并成本
所有的子问题都是为了解决这个问题,但是在分配的情况下我们将数组划分到一个特定的枢轴点,所以在计算快速排序的时间复杂度时,我们为什么要采用O(n)
f(n)
的时间。
这如何作为征服步骤?
答案 0 :(得分:1)
通过征服步骤不明白你的意思。
f(n)
实际上是在递归函数中完成的任何事情的成本,这种情况发生在递归之前,之后或之间。
在快速排序的情况下,合并分区解决方案的成本为0,因为在对枢轴的左侧和右侧进行排序后您不需要执行任何操作。整个成本是生成分区,为此,您需要定位所选的枢轴。这就是为什么快速排序被归类为硬分裂易加入的分而治之的原因。
定位枢轴的成本为O(n)
,因为您必须从左向右和从右向左移动,在枢轴的错误一侧找到项目,并交换它们,直到两次搜索(从从左到右,从右到左)相互交叉。
希望这对你的理解有所帮助,如果我完全误解了你的问题,那就很抱歉。