📜  门| GATE-CS-2006 |第52章

📅  最后修改于: 2021-06-29 05:39:06             🧑  作者: Mango

假设我们有一个O(n)时间算法,该算法可以找到未排序数组的中位数。

现在考虑一个QuickSort实现,在该实现中,我们首先使用上述算法找到中位数,然后将中位数用作枢轴。此修改后的QuickSort的最坏情况下的时间复杂度是多少?
(A) O(n ^ 2 Logn)
(B) O(n ^ 2)
(C) O(n登录登录)
(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)
我们可以使用主方法解决上述递归关系

参考:
https://zh.wikipedia.org/wiki/Master_theorem

与http://geeksquiz.com/algorithms-searching-and-sorting-question-3/相同

该解决方案由Parul Sharma提供。
这个问题的测验