【发布时间】:2018-09-02 18:50:14
【问题描述】:
考虑一个数组 A={1,2,0,4,5} 我如何通过在分区过程中将中间元素作为枢轴使用快速排序对其进行排序?..枢轴变为“0”等这个数组,不存在有效的左指针。如何解决这个异常?谁能解释一下这个算法的逐步工作原理吗?
【问题讨论】:
-
Quicksort 在这种情况下工作正常,尽管如果选择的每个枢轴都在一端或另一端,它的性能会受到影响。我怀疑你在这里得到的关于快速排序的解释比任何无数的解释都好,包括wikipedia
-
在分区之后你将拥有
A = {0, 2, 1, 4, 5}然后你需要递归地对范围[-1, 0)(空)和[1, 5)进行排序。 -
取第一个、中间和最后一个元素的中位数可以避免这种情况,所以略有改进。
标签: algorithm quicksort partitioning array-algorithms