Quicksorting整数数组练习

时间:2015-04-27 21:28:55

标签: algorithm sorting quicksort

所以我有这个数组{3,1,4,1,5,9,2,6,5,3,5}

我正在使用三个中位数的方法来获得支点。

所以在这种情况下,这里的中位数在左,中,右之间:3,9,5。所以它是5

我要做的第一件事是确保枢轴在最左边。 现在我将数字保持在左边小于5并将数字移到数组的最右边。最终结果是:{3,1,4,1,2,3|5|5,9,6,5}

现在快速分配左右子阵列。

{3,1,4,1,2,3}的中位数为3,重新排列后我得到{1,1,2,3,4}

{5,9,6,5}的中位数为5,我得到{5,5,9,6}作为向右排序相等和更大数字的结果。但是这个子阵列并不像第一个子阵列那样排序。它只会在中位数为6时起作用。那么哪里出错了?感谢。

1 个答案:

答案 0 :(得分:1)

您必须再次对{|5|5,9,6}(或{5|5|,9,6})的正确子阵列进行排序。中位数为6,结果为{5,6,9}(或{6,9})。

另请注意,具有许多重复键的天真Quicksort可降级为二次时间复杂度。有一些方法可以检测与pivot相等的键,并将它们从递归排序的子数组中排除。