假设我们构建了一个quicksort,并且pivot值需要线性时间。找出最坏情况运行时间的重现。
我的回答: T(n)= T(n-1)+ T(1)+ theta(n)
当子阵列完全不平衡时,会出现最坏情况。 一个子阵列中有1个元素,另一个子阵列中有(n-1)个元素。 theta(n)因为它需要运行时间n来找到枢轴。
我这样做是否正确?
答案 0 :(得分:2)
你的复发大多是正确的,但你实际上并没有进行两次递归调用。在最坏情况下,快速排序,数据透视图将是数组中最大或最小的元素,因此您将重复使用一个大小为n - 1的巨大数组。另一个子数组的长度为0,因此不会进行递归调用。最重要的是,完成的工作总量是每个级别的Θ(n),因此递归关系更合适
T(n)= T(n-1)+Θ(n)
然后这又解决了Θ(n 2 )。
希望这有帮助!
答案 1 :(得分:1)
你无法观察,因为根据我的研究T(N)= T(N-K)+ T(K-1)+ n 在我们有之前,我们无法观察到确切的价值 k的值,
答案 2 :(得分:0)
T(n)= T(an /(a + b))+ T(bn /(a + b))+ n
其中a /(a + b)和b /(a + b)是所考虑数组的分数