分区步骤如何作为快速排序中的征服步骤?
How does partitioning step acts as a conquering step in quick sort?
递归关系的时间复杂度由下式给出:
T(n) = aT(n/b) + f(n)
这里f(n)
是攻克子问题的代价即合并的代价
所有子问题都是为了解决问题,但在分区的情况下,我们围绕特定的枢轴点划分数组,因此在计算快速排序的时间复杂度时,为什么我们采用 O(n)
f(n)
.
的时间
这是如何作为一个征服的步骤?
没明白你说的征服步骤是什么意思
f(n)
实际上是在你的递归函数中所做的任何事情的成本,它发生在你的递归之前、之后或之间。
在快速排序的情况下,合并分区的解的成本为0,因为在枢轴的左右两侧排序后不需要做任何事情。全部成本都在制作分区上,为此,您需要定位您选择的枢轴。这就是为什么快速排序被归类为分而治之的 Hard Split Easy Join 类型。
定位枢轴的成本是 O(n)
,因为您必须从左到右和从右到左移动,在枢轴的错误一侧找到项目,并交换它们,直到两次搜索(从左到右,从右到左)互相交叉
希望这对您的理解有所帮助,如果我完全误解了您的问题,我们深表歉意。
递归关系的时间复杂度由下式给出:
T(n) = aT(n/b) + f(n)
这里f(n)
是攻克子问题的代价即合并的代价
所有子问题都是为了解决问题,但在分区的情况下,我们围绕特定的枢轴点划分数组,因此在计算快速排序的时间复杂度时,为什么我们采用 O(n)
f(n)
.
这是如何作为一个征服的步骤?
没明白你说的征服步骤是什么意思
f(n)
实际上是在你的递归函数中所做的任何事情的成本,它发生在你的递归之前、之后或之间。
在快速排序的情况下,合并分区的解的成本为0,因为在枢轴的左右两侧排序后不需要做任何事情。全部成本都在制作分区上,为此,您需要定位您选择的枢轴。这就是为什么快速排序被归类为分而治之的 Hard Split Easy Join 类型。
定位枢轴的成本是 O(n)
,因为您必须从左到右和从右到左移动,在枢轴的错误一侧找到项目,并交换它们,直到两次搜索(从左到右,从右到左)互相交叉
希望这对您的理解有所帮助,如果我完全误解了您的问题,我们深表歉意。