Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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_Math_Quicksort_Recurrence - Fatal编程技术网

Algorithm 最坏情况下快速排序运行时间的重现性

Algorithm 最坏情况下快速排序运行时间的重现性,algorithm,math,quicksort,recurrence,Algorithm,Math,Quicksort,Recurrence,假设我们构建了一个快速排序,并且枢轴值需要线性时间。查找最坏情况下运行时间的重复周期 我的答覆是: T(n)=T(n-1)+T(1)+θ(n) 最坏的情况发生在子阵列完全不平衡时。 一个子阵中有1个元素,另一个子阵中有(n-1)个元素。 θ(n),因为找到枢轴需要运行时间n 我这样做正确吗?您的递归基本上是正确的,但实际上并没有进行两次递归调用。在快速排序的最坏情况下,pivot将是数组中最大或最小的元素,因此您将在一个大小为n-1的巨大数组中重复出现。另一个子数组的长度为0,因此不进行递归调用

假设我们构建了一个快速排序,并且枢轴值需要线性时间。查找最坏情况下运行时间的重复周期

我的答覆是: T(n)=T(n-1)+T(1)+θ(n)

最坏的情况发生在子阵列完全不平衡时。 一个子阵中有1个元素,另一个子阵中有(n-1)个元素。 θ(n),因为找到枢轴需要运行时间n


我这样做正确吗?

您的递归基本上是正确的,但实际上并没有进行两次递归调用。在快速排序的最坏情况下,pivot将是数组中最大或最小的元素,因此您将在一个大小为n-1的巨大数组中重复出现。另一个子数组的长度为0,因此不进行递归调用。最重要的是,每个级别完成的总功是Θ(n),因此递归关系更合适

T(n)=T(n-1)+Θ(n)

这反过来又解为Θ(n2)


希望这有帮助

你不能观察,因为根据我的研究,T(N)=T(N-K)+T(K-1)+N 在我们有足够的时间之前,我们无法观察到确切的数值 k的值,

T(n)=T(an/(a+b))+T(bn/(a+b))+n


其中a/(a+b)和b/(a+b)是考虑中的数组的分数

not 2n?…..我刚刚找到一个关于递归关系的非常好的教程,似乎是一个很好的资源:@Nathan really nice resource。我知道如何一次性解决递归关系。谢谢