Quicksort - 无法识别枢轴

时间:2012-10-31 07:07:06

标签: sorting quicksort

我正在尝试理解quicksort,我得到了一般的想法,但我遇到了以下问题。有没有一种简单的方法可以在每次迭代后根据数组确定使用哪个轴?

Consider the following array and its state after iterations of QuickSort on the array: 

Initial Array: 32, 12, 17, 73, 40, 88, 16, 75 
After Iter 1: 32, 12, 17, 40, 16, 73, 88, 75 
After Iter 2: 12, 16, 17, 40, 32, 73, 88, 75 
After Iter 3: 12, 16, 17, 40, 32, 73, 88, 75 
After Iter 4: 12, 16, 17, 32, 40, 73, 88, 75 
After Iter 5: 12, 16, 17, 32, 40, 73, 75, 88 

命名此QuickSort执行中使用的轴选择策略。

提示:检查在每个阶段选择哪个值作为枢轴。记得 QuickSort首先递归地对左子数组及其左子数组进行排序 排序正确的子阵列。

1 个答案:

答案 0 :(得分:1)

选择任何元素作为枢轴,然后在第一次迭代中,小于枢轴的所有元素都放在枢轴的左侧,如果它们已经没有,则更大。这意味着如果需要,也可以在数组中向前交换枢轴。了解这一点并查看迭代应该有助于确定支点。

例如在你的上述情况下,我相信中间元素被选为枢轴,即73.在第一次迭代之后,所有小于它的元素都被移动到左边并且大于它被移动到右边。