Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 快速排序分区透视异常_Algorithm_Quicksort_Partitioning_Array Algorithms - Fatal编程技术网

Algorithm 快速排序分区透视异常

Algorithm 快速排序分区透视异常,algorithm,quicksort,partitioning,array-algorithms,Algorithm,Quicksort,Partitioning,Array Algorithms,考虑一个数组A={1,2,0,4,5}如何使用快速排序,通过在分区过程中将中间元素作为轴来排序?。轴变为“0”,因此在此数组中,没有有效的左指针。如何解决这个异常?有人能告诉我这个算法的一步一步的工作原理吗?多年来,pick a pivot算法有一系列的改进,首先使用最后一个元素作为轴心,很快改进为选择一个随机元素,这可以防止对算法的恶意攻击,然后选择x random的媒体 A,将要素分为30%/70%和70%/30%,因此始终保证至少30%的进度,这是一个很好的解释,最近(2017年)通过自适

考虑一个数组A={1,2,0,4,5}如何使用快速排序,通过在分区过程中将中间元素作为轴来排序?。轴变为“0”,因此在此数组中,没有有效的左指针。如何解决这个异常?有人能告诉我这个算法的一步一步的工作原理吗?

多年来,pick a pivot算法有一系列的改进,首先使用最后一个元素作为轴心,很快改进为选择一个随机元素,这可以防止对算法的恶意攻击,然后选择x random的媒体


A,将要素分为30%/70%和70%/30%,因此始终保证至少30%的进度,这是一个很好的解释,最近(2017年)通过自适应算法进行了改进

在这种情况下,快速排序工作正常,但如果选择的每个轴都在一端或另一端,则其性能会受到影响。我怀疑你在这里能得到比其他无数解释更好的关于快速排序的解释,包括在分区后你会得到
A={0,2,1,4,5}
,然后你需要递归地对范围[-1,0)(空)和[1,5]进行排序。取第一个、中间和最后一个元素的中间值可以避免这种情况,所以这是一个小小的改进。