2017-07-25 123 views
0

我非常困惑。 一个测验题是“真或假,快速排序实现在算法的征服阶段排序”因为我记得读我选择了正确的:QuickSort在算法的征服阶段实现排序?

三个步骤快速排序如下:

除法:重新排列元素并将数组拆分为两个子数组和中间元素,以便左侧子数组中的每个元素小于或等于中间元素,并且右侧子数组中的每个元素都大于中间元素。

征服:对两个子阵列进行递归排序。

组合:无。

然而,答案的猜谜说,答案是没有任何解释假...

由于文字书说,快速排序如下分而治之算法中征服阶段递归两个子阵列进行排序,不该答案是否属实?

任何启发将不胜感激。

+1

我投票结束这个问题作为题外话,因为我认为它属于计算机科学 –

回答

0

快速排序选择一个关键点,将一切放在左侧,一切放大到右侧。

这是您所指的分步骤。

征服部分是在左侧和右侧子集上递归执行此操作。

然而,在分步,元素已经被排序(左小,更大的右)和快速排序工作,因为递归这样做可以确保一切都在正确的地方。

的定义是没有错的,因为征服重复这种对左侧和右侧,但分的部分是真正的分裂和重新排列它们,如前所述。

+0

gee是有道理的!谢谢 –

+0

不用担心!另一种思考它的方式正如下面有人指出的那样,在每一个划分步骤中,主轴都被放置在正确的位置(分类)。希望能帮助到你! –

+0

对于小于或大于主元的值,等于主元的值可能会被调换到右侧或左侧。将较小的值放在左侧,将较大的值放在正确的位置,这样每个分割步骤都会增加元素的排序,直到获得2或3个元素,并将这些元素移动到正确的位置。与其他一些分治算法不同,对于快速排序,分割后没有任何组合。 – rcgldr

1

实际上,快速排序可以在算法的分阶段实现排序。分割数组后,中间元素位于其正确的位置,因此您有一个元素在每个分割阶段之后排序。

+0

小于或大于数据透视点的值将移动到每个分区的右边位置,因此在每个分区步骤中排序变得更接近排序。 – rcgldr