算法导论7-3
读书笔记
为了使得算法对所有输入都能有较好的期望性能,所以我们在算法中引入了随机性;
伪代码如下:
RANDOMIZED-PARTITION(A, p, r)
i = RANDOM(p, r)
exchange A[r] with A[i]
return PARTITION(A, p, r)
RANDOMIZED-QUICKSORT(A, p, r)
if p < r
q = RANDOMIZED-PARTITION(A, p, r)
RANDOMIZED-QUICKSORT(A, p q - 1)
RANDOMIZED-QUICKSORT(A, q + 1, r)
这里的改动非常小,只是添加一个从随机算法中获得基准值的过程;
课后习题
7.3-1
为什么我们分析随机算法的期望时间,而不是其最坏时间呢?
因为并不是所有数据集都是最坏情况,在大多数情况下,数据集都处于不好不坏的情况,所以我们要分析算法的期望时间。
7.3-2
在\(RANDOMIZED-QUICKSORT\)的运行过程中,在最坏情况下,随机生成器\(RANDOM\)被调用多少次?在最好情况下呢?以\(\theta\)符号的形式给出你的答案?
最好最坏情况调用次数是一致的为\(\theta(n)\)。