我想证明quicksort的递归在n log n的最佳时间运行。
我得到了这个递归公式
B.one()
到目前为止我得到了什么:
M(0) = 1
M(1) = 1
M(n) = min (0 <= k <= n-1) {M(K) + M(n - k - 1)} + n
show that M(n) >= 1/2 (n + 1) lg(n + 1)
专注于我得到的内在感受:
By induction hyposes
M(n) <= min {M(k) + M(n - k - 1} + n
但是我认为我做错了什么。我认为“ k”应为gonne,但我看不到此等式如何抵消所有“ k”。所以,可能是我做错了事
答案 0 :(得分:1)
您确实想摆脱1/1/2019 12:00:00 PM is not between 1:00 and 3:00
1/1/2019 1:00:00 PM is between 1:00 and 3:00
1/1/2019 2:30:00 PM is between 1:00 and 3:00
1/1/2019 3:00:00 PM is between 1:00 and 3:00
1/1/2019 3:30:00 PM is not between 1:00 and 3:00
。为此,您希望找到最小值k
的下限。通常,它可能是任意棘手的,但是在这种情况下,标准方法有效:用M(k) + M(n - k - 1)
求导数。
k
我们希望导数为((k+1) ln(k+1) + (n-k) ln(n-k))' =
ln(k+1) + (k+1)/(k+1) - ln(n-k) - (n-k)/(n-k) =
ln((k+1) / (n-k))
,所以
0
您可以检查是否确实是本地最小值。
因此,ln((k+1) / (n-k)) = 0 <=>
(k+1) / (n-k) = 1 <=>
k + 1 = n - k <=>
k = (n-1) / 2
达到了M(k) + M(n - k - 1)
的最佳下界(可以从归纳假设中获得)。现在,您可以用该值代替k=(n-1)/2
,而k
将是您唯一剩下的变量。