Algorithm 快速排序CLRS分区始终位于n/3元素上

Algorithm 快速排序CLRS分区始终位于n/3元素上,algorithm,quicksort,recurrence,Algorithm,Quicksort,Recurrence,我想知道当使用CLR中的快速排序时,假设轴始终处于n/3位置时,这是否是正确的重复 我的复发率如下 如果枢轴始终恰好位于n/3位置,则T(n)的重现性为: 我将解释总和的三个组成部分分别来自何处: 您需要线性时间来迭代数组的所有元素,从而决定每个元素在轴的哪一侧 将所有元素定位到轴的左侧或右侧后,递归地对数组的左侧排序,该数组由大约(n-1)/3个元素组成。该数字来自枢轴位于n/3位置的事实 递归排序数组的右侧,该数组由大约2(n-1)/3个元素组成 你没有问过关于求解递归的问题,但

我想知道当使用CLR中的快速排序时,假设轴始终处于n/3位置时,这是否是正确的重复

我的复发率如下


如果枢轴始终恰好位于n/3位置,则T(n)的重现性为:

我将解释总和的三个组成部分分别来自何处:

  • 您需要线性时间来迭代数组的所有元素,从而决定每个元素在轴的哪一侧

  • 将所有元素定位到轴的左侧或右侧后,递归地对数组的左侧排序,该数组由大约(n-1)/3个元素组成。该数字来自枢轴位于n/3位置的事实

  • 递归排序数组的右侧,该数组由大约2(n-1)/3个元素组成


你没有问过关于求解递归的问题,但我会注意到它求解nlog(n),就像枢轴总是恰好位于n/2位置的情况一样。

更精确的分析是t(n)=t((n-3)/3)+t(2n/3)+cn吗?例如,取n为12。[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]. 左侧有3个元素,右侧有8个元素。为了使其更加精确,您可以将T((n-1)/3)替换为T(地板(n/3)-1),也可以将T(2(n-1)/3)替换为T(n-地板(n/3))。也可以将cn替换为n。稍微修改的重复次数统计通过快速排序进行的比较次数,假设轴始终恰好位于地板(n/3)位置。在n=12的情况下,所选枢轴位于4。用12代替n,我们得到:T(12)=12+T(12/3-1)+T(12-12/3)或T(12)=12+T(3)+T(8)。