7.3-1
本来将快速排序随机化就是为了让其最坏情况的出现随机化,此时我们关心的就是该算法的期望运行时间。
7.3-2
在最坏的情况下,每次RANDOM取得的都是子数组中最大或最小的元素的下标,每次划分都会出现 0和n−1 的两个子数组,所以每层节点都只会调用一次RANDOM,所以
T(n)=T(n−1)+Θ(1)=Θ(n)
在最好的情况下,每次RANDOM取得的都刚好是子数组中大小居中的元素的下标,每次划分都会出现 ⌊n/2⌋ 和 ⌊n/2⌋−1 两个子数组,所以
T(n)=2T(n/2)+Θ(1)=Θ(n)