QuickSort在算法征服阶段实现排序?
QuickSort achieves sorting during the conquer stage of algorithm?
我很困惑。
其中一个测验问题是 "True or False, Quick sort achieves sorting during the conquer stage of the algorithm" 我选择了 true 因为我记得读过:
快速排序的三个步骤如下:
划分:重新排列元素并将数组拆分为两个子数组和中间的一个元素,使得左侧子数组中的每个元素都小于或等于中间元素,右侧子数组中的每个元素都大于中间元素。
征服:对两个子数组进行递归排序
合并:None.
然而,测验的答案说答案是错误的,没有任何解释...
正如教科书所说,QuickSort 遵循分而治之的算法,在征服阶段递归地对两个子数组进行排序,答案不应该是正确的吗?
任何启发将不胜感激。
Quicksort 选择一个主元,将较小的东西放在左边,将较大的东西放在右边。
这就是您所指的分割步骤。
征服部分是在左右子集上递归执行此操作。
但是,在除法步骤中,元素已经被排序(左边较小,右边较大),并且快速排序有效,因为递归这样做可以确保所有内容都在正确的位置。
定义没有错,因为征服在左右重复了这一点,但划分部分才是真正分裂和重新排列它们的部分,如所述。
实际上,快速排序是在算法的划分阶段实现排序的。划分数组后,中间元素在正确的位置,因此每个划分阶段排序后有一个元素。
我很困惑。 其中一个测验问题是 "True or False, Quick sort achieves sorting during the conquer stage of the algorithm" 我选择了 true 因为我记得读过:
快速排序的三个步骤如下:
划分:重新排列元素并将数组拆分为两个子数组和中间的一个元素,使得左侧子数组中的每个元素都小于或等于中间元素,右侧子数组中的每个元素都大于中间元素。
征服:对两个子数组进行递归排序
合并:None.
然而,测验的答案说答案是错误的,没有任何解释...
正如教科书所说,QuickSort 遵循分而治之的算法,在征服阶段递归地对两个子数组进行排序,答案不应该是正确的吗?
任何启发将不胜感激。
Quicksort 选择一个主元,将较小的东西放在左边,将较大的东西放在右边。
这就是您所指的分割步骤。
征服部分是在左右子集上递归执行此操作。
但是,在除法步骤中,元素已经被排序(左边较小,右边较大),并且快速排序有效,因为递归这样做可以确保所有内容都在正确的位置。
定义没有错,因为征服在左右重复了这一点,但划分部分才是真正分裂和重新排列它们的部分,如所述。
实际上,快速排序是在算法的划分阶段实现排序的。划分数组后,中间元素在正确的位置,因此每个划分阶段排序后有一个元素。