排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为 “一趟”。在快速排序中,满足左边都小于 x,右边都大于 x 的位置,称为 “基点”。对于 “基点” 的个数,有如下规律:
第一趟排序,确定一个基点
第二趟以及以后的排序,确定一个或两个基点
当第一趟元素确认的位置为最左或最右时,第二趟排序只能确认一个基点
当第一趟元素确认位置不是最左或最右时,第二趟能确认 2 个基点
我们将 “基点” 标出来:
选项 A,[ 4, 8, 6, 10, 12, 16, 14 ],如果第一趟是 4,第二趟可以是 10 或者 12,由于 10 和 12 都在中间,第三趟必须有两个基点,但是没有,不符合题意
选项 B,[ 10, 4, 6, 8, 12, 14, 16 ],如果第一趟是 16,第二趟可以是 14,第三趟可以是 12,它们都在最右边,每趟只需要确认一个基点,符合题意
选项 C,[ 8, 4, 6, 12, 10, 14, 16 ],每趟至少确认一个基点,这里只有两个,不符合题意
选项 D,[ 4, 8, 6, 12, 10, 16, 14 ],每趟至少确认一个基点,这里只有一个,不符合题意
综上所述,答案选择 A C D
通常,快速排序的实现方法是选择第一个元素作为基准元素。因此,我们可以将这个数组的第一个元素4作为基准元素进行分区操作,得到以下两个子数组:
左子数组:4, 6
右子数组:8, 10, 12, 16, 14
在第三趟中,左子数组和右子数组都不会再进行分区操作,因为它们的长度都小于等于1。因此,如果这个数组是快速排序的第三趟结果,那么它的左半部分必须已经完成了分区操作,将小于等于4的元素移到了左边,大于4的元素移到了右边。但是,在这个数组中,6比4大,因此左半部分没有完成分区操作。因此,这个数组不可能是快速排序的第三趟结果。