假设我们有一个 O(n) 时间算法来查找未排序数组的中值。
现在考虑一个 QuickSort 实现,我们首先使用上述算法找到中值,然后使用中值作为主元。这个修改后的 QuickSort 的最坏情况时间复杂度是多少。
(A) O(n^2 Logn)
(B) O(n^2)
(C) O(n Logn Logn)
(D) O(nLogn)答案: (D)
解释:
当我们选择中值作为主元元素时,在分区算法之后,它将位于数组的中间,其中一半元素在左侧,一半在右侧。
因此,在分区算法之后,数组将被分成两个相等的部分,每个部分都有 n/2 个元素。
因此,由此产生的递推关系将是 –
T(n) = O(n)(用于选择中位数)+ O(n)(用于分区)+ T(n/2) + T(n/2)
T(n) = O(n) + 2T(n/2)
我们可以用master方法解决上面的递推关系
参考:
https://en.wikipedia.org/wiki/Master_theorem
与 http://geeksquiz.com/algorithms-searching-and-sorting-question-3/ 相同
该解决方案由Parul Sharma 提供。
这个问题的测验