我读到快速选择的时间复杂度是:
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 of mom(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)
有人可以告诉我哪里出错了吗?