所以我有这个数组{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时起作用。那么哪里出错了?感谢。
答案 0 :(得分:1)
您必须再次对{|5|5,9,6}
(或{5|5|,9,6}
)的正确子阵列进行排序。中位数为6,结果为{5,6,9}
(或{6,9}
)。
另请注意,具有许多重复键的天真Quicksort可降级为二次时间复杂度。有一些方法可以检测与pivot相等的键,并将它们从递归排序的子数组中排除。