Quicksort Pivot积分

时间:2011-05-02 22:51:23

标签: java quicksort

对于quicksort,(在java中,如果重要的话),枢轴点(或枢轴索引)的数量与给定数组的大小之间是否存在关系?例如,如果数组大小为10,那么总是会有5个支点吗?

3 个答案:

答案 0 :(得分:0)

是的,关于n / 2是正确的。但是,我不知道为什么会这么重要。

答案 1 :(得分:0)

你可以拥有你想要的多少支点(我想是......)

你拥有的枢轴越多,下一次递归的效率就越高,但如果它太大(特别是如果它是非常数的话),你将失去更多的时间来寻找你的支点而不是你获得的。

我认为典型的是每次迭代3个潜在的枢纽,但它完全取决于实现。

但请记住,在最糟糕的情况下,你最终将进行n次迭代(快速排序的最坏情况是O(n^2))。这自然会导致需要n个枢轴,每次迭代都会做很少的工作。

现在,在最后一次迭代中,你可以期待大约n / 3个支点。在上面的迭代中,它将是n / 6。在下一次迭代中,它将是n / 12。如果你采用该系列的限制,你最终会重复.6。所以看起来你可以期待2/3 n个总枢纽(因为你总共有大约2/3 n次迭代)

答案 2 :(得分:0)

不一定。这取决于数据和算法。平均而言,具有相当随机的数据和一个不错的实现,它应该是log 2 (n)pivot的顺序。