【发布时间】:2017-06-04 12:24:40
【问题描述】:
我读到快速选择的时间复杂度是:
T(n) = T(n/5) + T(7n/10) + O(n)
我将上述内容读作“从 n 个元素中快速选择所需的时间 =(从 7n/10 个元素中选择所需的时间)+(从 n/5 个元素中快速选择所需的时间)+(一些 const *n)”
所以我知道,一旦我们找到合适的枢轴,只剩下 7n/10 个元素,并且进行一轮安排枢轴需要时间 n。
但是 n/5 部分让我感到困惑。我知道这与中位数有关,但我不太明白。 根据我的理解,中位数的中位数递归地分成 5 并找到中位数,直到你得到 1。
我发现这样做所花费的时间大约是 n 所以妈妈的T(n)=n
如何让 quick_select(n) = T_mom(n)/5 的 T 相等?
换句话说,这就是我认为方程式应该这样写的:
T(n)= O(n)+n+T(7n/10)
where,
O(n) -> for finding median
n-> for getting the pivot into its position
T(7n/10) -> Doing the same thing for the other 7n/10 elements. (worst case)
谁能告诉我哪里出错了?
【问题讨论】:
-
您在此处列出的时间复杂度看起来像是中位数的中位数,而不是快速选择。
-
如果只是妈妈,为什么 7n/10 会在那里?
标签: algorithm time time-complexity quicksort median-of-medians